mybatis与hibernate对比

一:开发速度的对比

就开发速度而言,hibernate的真正掌握要比Mybatis难一些。Mybatis框架相对简单,也相对轻量。

但是Hibernate比Mybatis容易理解一点。

比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求去考虑究竟哪一个更

适合本项目的开发,比如:一个项目中没有用到复杂的查询语句,只有简单的增删改查,用Hibernate效

率就很快,因为简单的sql语句hibernate已经封装好了,不用写sql节省开发时间,但是对于一个大型项目

复杂语句较多,选择Mybatis就会快许多,而且sql的管理也比较方便。


二:开发工作量的对比

Hibernate和Mybatis都有各自的代码生成器。可以生成简单的DAO层代码,针对高级查询,Mybatis

需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,程序员不用关系SQL的生成与

结果映射,可以把精力专注到业务流程上面。

三:sql优化方面

Hibernate的查询会将表中的所有字段查询出来,消耗性能。Hibernate也可以自己指定要查询的字段,

但是破坏了Hibernate开发的面向对象的优势。Mybatis的SQL是手写的,可以按需求查询指定字段。Hibernate

HqL语句的调整需要将SQL打印出来。Mybatis的SQL是自己手动写的所以调整方便。但Hibernate具有自己的

日志统计。Mybatis不带日志,需要使用Log4j进行日志记录管理。


四:对象管理的对比

Hibernate是完整的对象/关系映射,它提供了对象状态管理(state management)的功能,使开发者不

需要理会底层数据库的实现细节。相对与JDBC/SQL持久层中需要管理SQL语句,Hibernate采用了更自然的

面向对象的方式来进行数据的持久化操作。使用Hibernate只需关注对象的状态(state),不必考虑sql语句的

执行,只需要在性能优化的时候进行了解。使用Mybatis需要对对象自己进行管理。


五:缓存机制

Hibernate缓存

Hibernate一级缓存是session缓存,利用好一级缓存需要对session的生命周期进行管理。建议在一个Action

操作中使用一个session。一级缓存需要对session进行严格管理。

二级缓存是SessionFactory的缓存。SessionFactory的缓存分为内置缓存和外置缓存。内置缓存中存放的是

SessionFactory对象的一些集合属性包含的数据(映射元素及预定SQL语句等)对于应用程序来说是只读的。外置

缓存中存放的是数据库数据的副本,其作用和一级缓存类似。二级缓存除了以内存作为存储介质外,还可以选用硬

盘的外部存储设备。二级缓存称为进程级缓存或SessionFactory级缓存,它可以被所有session共享,它的生命周期

伴随着SessionFactory的生命周期存在和消亡。

MyBatis缓存

MyBatis包含一个非常强大的查询缓存特性,它可以非常方便的配置和定制。

Mybatis3中的缓存实现的很多改进都已经实现了,使得它更强大而且易于配置。

默认情况下是没有开启缓存的,除了局部的session缓存,可以增强变现而且处理循环依赖也是必须的。要开

启二级缓存,你需要在你的sql映射文件中添加一行:<cache/>

1。映射语句文件中的所有select语句将会被缓存。

2. 映射语句文件中的所有insert update 和 delete语句会刷新缓存。

3.缓存会使用Least Recently Used算法来回收。

4.根据时间表(no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新。

5.缓存会存储列表集合或对象(无论查询方法返回什么)的1024个引用。

6.缓存会被视为是read/write的缓存,意味着对象检索不是共享的,而且可以安全的被调用或者修改,而不干扰

其他调用者或者线程所做的潜在修改。



总结:

相同点:Hibernate与Mybatis都可以通过SessionFactoryBuider 由XML配置文件生成的SessionFactory,然后由

SessionFactory生成Session,最后由Session来开启执行事务和sql语句。其中SessionFactoryBu,SessionFactory的

生命周期都是差不多的。

Hibernate和Mybatis都支持JDBC和JTA事务处理。

Mybatis优势

MyBatis可以进行更为细致的SQl优化,可以减少查询字段。

Mybatis容易掌握,Hibernate门槛较高。

Hibernate优势

Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射

Hibernate对对象的维护和缓存比Mybatis好,方便增删改查。

Hibernate数据库移植性好,Mybatis根据数据库不同要重写SQL

Hibernate有更好的二级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值