hibernate与mybatis的比较

栏目: Hibernate · 发布时间: 7年前

近来面试了不少 java 程序员,基本上都是SSM,这个M,就是mybatis,数据持久层框架。

java世界里,另一个著名且应用广泛的持久层框架是HIbernate?我以前搞.net的时候,也用它,NHibernate,。net的版本。

两者比较,有啥区别?

Hibernate试图完全用面向对象的方法来访问数据库,最终将我们的代码转化成 SQL 到数据库里执行,返回结果用实体类或集合之类来接收;当然Hibernate也可以执行我们写的SQL语句,但返回结果需要 程序员 手动做一个转换,才能赋值到实体类或集合里。

而mybatis则需要我们在注解或配置里写好SQL,交给它来执行。返回结果也是用实体类或集合之类来接收。

先给结论: mybatis比hibernate要实用和灵活

hibernate使得程序员可以像开发业务模块一样,直接写代码来操作数据库,理论上可以完全不懂SQL,因为这部分工作它替我们做了。但是,最强大的之处也往往是最薄弱之处。正因为转化成SQL这个工作hibernate替我们做了,这是个黑箱,我们写代码的时候,往往不知道它会转成什么样子,感觉不可控,尤其是出了问题调试的时候。有时候,我们明明只是查询,但天知道数据库居然会开启了一个事务。这里面原因很多,可能是我们先从数据库查找,获得了一个对象,然后中途修改了这个对象的属性,hibernate就会自动持久化到数据库,从而开启了事务。

本来呢,将程序员当成普通用户,啥事都帮他做好,表面上方便,但掩盖了原理,反而阻碍了开发人员的理解和深入,这是微软系列的风格,JAVA应该是偏重于开源和参与,所以我觉得hibernate是走偏了。

像mybatis就挺好啊,还是写SQL语句,但返回结果封装在对象里,灵活与便利很好地结合起来。事实上,hibernate简单的增删改查不用写SQL,但像统计分析这类比较复杂的,我们还是照样写SQL。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro JavaScript Design Patterns

Pro JavaScript Design Patterns

Dustin Diaz、Ross Harmes / Apress / 2007-12-16 / USD 44.99

As a web developer, you’ll already know that JavaScript™ is a powerful language, allowing you to add an impressive array of dynamic functionality to otherwise static web sites. But there is more power......一起来看看 《Pro JavaScript Design Patterns》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具