Hibernate与Mybatis的区别、Hibernate一级缓存与二级缓存之间的区别

Hibernate对数据库提供了较为完整的封装,不需要手写SQL语句,自动生成、自动执行,持久层框架,开源的对象关系映射,对JDBC的进一步封装。
Mybatis着力点在于JAVA对象与SQL之间的映射关系,需要编写sql语句,半自动,需要注意的细节更多,但是更有益于sql的优化,移植性弱,缓存机制不如hibernate。

Hibernate优点
(1)不需要编写SQL语句
(2)Hibernate屏蔽了数据库的差异,增强了对数据库的可移植性(使用Hibernate标准开发,更换数据库时,只需要配置相应的配置文件即可)
(3)Hibernate实现了透明持久化。当保存一个对象时,这个对象不需要继承Hibernate中的任何类、实现任何接口,只是个纯粹的单纯对象——POJO对象(没有继承第三方框架的任何类和实现它的任何接口)
(4)Hibernate是一个没有侵入性的轻量级框架
(5)Hibernate代码测试方便
(6)有更好的二级缓存机制,可以使用第三方缓存

Hibernate基本流程:
配置实现类与数据库表映射关系,产生sessionFactory,拿到session对象开启事务,关闭session。

缓存机制
Hibernate一级缓存与二级缓存之间的区别
1.session提供了一级缓存的功能,默认总是有效的,应用保存持久化实体、修改持久化实体时,session不会立即将改变提交数据库,而是缓存在当前session,除非显示调用了session的flush()方法或通过close()方法关闭session。通过一级缓存,可以减少应用程序与数据库的交互,提高数据库访问性能。
2.SessionFactory级别的二级缓存是全局性的,所有的Session共享这个二级缓存,不过其默认关闭,需要显示开启并制定需要哪种实现类。一旦开启并指定,SessionFactory就会缓存访问过的该实体类每个对象,除非缓存数据超过制定缓存空间。
一级缓存和二级缓存都是对整个实体进行缓存,不会缓存普通属性,可以使用查询缓存进行属性缓存。
查询缓存:将HQL或SQL语句以及他们的查询结果作为键值对进行缓存。默认关闭,显示开启。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值