03.06 java持久层哪个好?

我的名字长度有3厘米


在 java 应用的数据库开发中,不可避免地会使用到持久层框架,而现在开源项目中持久层框架用到最多的基本就是 iBatis、myBatis 和 Hibernate 了。这里就重点分析下这三个框架之间的区别。 \r

iBatis 与 Hibernate \r

  iBatis 是基于SQL映射的持久层框架,相对 Hibernate 一站工的ORM解决框架来言,iBatis 算是一种半自动化的ORM实现。两者的区别是:1.Hibernate 是当前最流行、最经典的o/r mapping框架;而 iBatis 相对 Hibernate“o/r”而言是一种“sql mapping”的orm实现。 \r

2.iBatis入门简单,即学即用;而Hibernate则相对来说较为复杂,学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,怎样用好 Hibernate 方面需要经验和能力都很强才行。

3.对于具体的数据操作,Hibernate 会自动生成sql 语句,能够在程序运行时自动生成,能够自动建表,无论到什么机器上,都不需要数据库,都能自动完成迁移;而iBatis 则要求开发者编写具体的sql 语句,且必须要有相应的数据库表才能进行数据库的移植。相对 Hibernate 而言,iBatis 以sql开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。

4.Hibernate 功能强大,数据库无关性好,O/R(对象/关系)映射能力强,Hibernate 对数据库结构提供了较为完整的封装,Hibernate 的O/R Mapping实现了POJO(实体类) 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行;而 iBatis 的着力点,则在于pojo与sql之间的映射关系。也就是说,iBatis 并不会为程序员在运行期自动生成sql执行。具体的sql需要程序员编写,然后通过映射配置文件,将sql所需的参数,以及返回的结果字段映射到指定pojo。使用 iBatis 提供的orm机制,对业务逻辑实现人员而言,面对的是纯粹的java对象,缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。如果涉及到数据库字段的修改,Hibernate 修改的地方很少,而 iBatis 要把那些sql mapping的地方一一修改。

5.当系统属于二次开发,无法对数据库结构做到控制和修改,那 iBatis 的灵活性将比 Hibernate 更适合。系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下 iBatis 会有更好的可控性和表现。 \r

6.Hibernate 现在已经是主流O/R Mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于iBatis。


每天10分钟学习很轻松


在 java 应用的数据库开发中,不可避免地会使用到持久层框架,而现在开源项目中持久层框架用到最多的基本就是 iBatis、myBatis 和 Hibernate 了。这里就重点分析下这三个框架之间的区别。

iBatis 与 Hibernate

iBatis 是基于SQL映射的持久层框架,相对 Hibernate 一站工的ORM解决框架来言,iBatis 算是一种半自动化的ORM实现。两者的区别是:1.Hibernate 是当前最流行、最经典的o/r mapping框架;而 iBatis 相对 Hibernate“o/r”而言是一种“sql mapping”的orm实现。


灬亦凡


每一个都有它的优势,jpa对于一些常规的sql查询,非常便捷,

mybatis对于一些复杂业务,灵活的sql利于开发以及优化sql ,

通用mapper这东西就是是个便捷开发插件,看你怎么利用了!

希望能帮助到你


不搞事的程序员老王


Jpa实现是hibernate,现在互联网应该很少使用hibernate了,这个用起来简单,开发快速,但是处理复杂的sql比较难。现在互联网公司多数在用mybatis,这个框架是个半自动的,简单易学,使用起来灵活


分享到:


相關文章: