关于Hibernate一级缓存和快照的理解

Hibernate的一级缓存和快照

hibernate的一级缓存属于session级别的缓存。它存在的目的是为了提高代码的效率,减少访问数据库的次数。程序在调用方法操作数据时,hibernate会发送一条sql语句获取到数据后再由hibernate组装之后返回给程序。如果程序需要多次操作同一数据时,hibernate就要不断的向数据库发送sql语句,这样就大大降低了程序的执行效率。hibernate缓存和快照的存在就可以大大提高程序的执行效率。

缓存原理

程序调用getXXX()方法获取数据,hibernate在每次访问数据库之后,会将获取的数据,封装起来实体对象存放在hibernate的session缓存中,然后再将数据返回给程序,当程序再次访问数据时,hibernate会先查看缓存中是否存在相同的数据,如果有,则直接返回缓存中的数据,如果没有,则向数据库发送sql语句操作数据库,并将获取到的数据,封装存入session缓存中并返回给程序。
| 在这里插入图片描述

快照原理

hibernate的快照机制和session缓存机制一样也是为了提高程序的执行效率,session缓存是为了提高程序在获取数据时的效率,而快照则是为了提高程序在更新数据时的效率。在hibernate将数据封装成对象放入session缓存中时,同时也会复制一份数据放入session缓存的快照中,当程序调用uadateXXX()方法并提交事务之后,hibernate不会直接向数据库发送sql语句执行更新操作,而是会先清理缓存,比对缓存和快照中的对象属性是否一致,如果一致,则不执行update语句,即不会向数据库发送sql语句,如果不一致,则将数据同步更新到数据库中,并更新快照区。
| 在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值