近来面试了不少 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。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- React与Vue模板使用比较(一、vue模板与React JSX比较)
- 从全方位为你比较3种数据科学工具的比较:Python、R和SAS(附链接)
- F#序列比较
- (翻译)前端构建工具的比较
- 0615 - 没有比较,就没有伤害
- 精读《如何比较 Object 对象》
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。