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。


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

查看所有标签

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

Game Engine Architecture, Second Edition

Game Engine Architecture, Second Edition

Jason Gregory / A K Peters/CRC Press / 2014-8-15 / USD 69.95

A 2010 CHOICE outstanding academic title, this updated book covers the theory and practice of game engine software development. It explains practical concepts and techniques used by real game studios,......一起来看看 《Game Engine Architecture, Second Edition》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具