Hibernate中的Session缓存机制

一级缓存:Session级别的缓存
   当Session被open时,缓存即被open
   当Session被close时,缓存即被close
   在缓存open到close这段时间,多次加载同一个持久化对象,只有第一次向数据库发送SQL语句加载,之后的加载都是基于缓存的
   不过Session从打开到关闭的时间很短暂,一般在项目中都是在业务方法开始时打开Session,调用结束后即关闭Session,在如此短暂的瞬间时刻内,多次加载同一个对象的可能性不大,换言之,一级缓存的可用之处也并不大

二级缓存:SessionFactory级别的缓存
   跟Session同理,level2 cache会随着sessionFactory的打开而打开,关闭而关闭。
   但是在一般的应用程序中,sessionfactory会以单例的形式存在,所以在整个应用程序的生命周期里,sessionfactory会一直存在。既二级缓存也一直存在直到关闭应用程序。
   
   二级缓存分为好几种,简单来讲就是类级别的缓存class-cache和查询缓存
query-cache.
   前者是以id作为缓存的key。
   后者是以查询条件作为缓存的key。
   具体配制方法这里不便细述
在Session中delete(a)时,如果a是持久化对象(已经在Session的缓存中),Session就执行delete语句,删除数据库中对应的记录。如果a是游离对象,先使游离对象a和Session关联(其实就是加载到Session的缓存中),使它变成一个持久化对象,然后再执行delete语句。Session的增删改查是面相对象的。
另外补充一点:在项目中,一般不太实用hibernate原生的缓存机制,原因是不好管理。更多时候,我们在业务层使用自己写的cache

欢迎评论彼此学习
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值