Hibernate缓存

Hibernate缓存作用:
Hibernate
是一个持久层框架经常访问物理数据库,为了降低应用程序对物理数据源访问频次从而提高应用程序运行性能缓存内数据对物理数据源中的数据复制应用程序运行时从缓存读写数据,在特定时刻或事件会同步缓存和物理数据源数据 。
Hibernate
缓存分类:
Hibernate缓存包括两大类:Hibernate级缓存和Hibernate二级缓存 。
Hibernate级缓存又称为“Session缓存”,它是内置的,不能被卸载(能被卸载意思就是这种缓存具有选性必须有功能,不可以取消session缓存)由于Session对象生命周期通常对应一个数据库事务或者一个应用事务因此它的缓存是事务范围缓存第一级缓存是必需的,不允许而且事实上也无法卸除。在第一级缓存中,持久化类实例都具有唯一ID
Hibernate
二级缓存又称为“SessionFactory缓存”,由于SessionFactory对象生命周期和应用程序过程对应因此Hibernate二级缓存进程范围或者集群范围缓存有可能出现并发问题因此需要采用适当并发访问策略该策略被缓存数据提供了事务隔离级别第二级缓存是可的,是一个可配置插件,在默认情况下SessionFactory会启用这个插件

什么样的数据适合放到第二级缓存中 ?
1、很少被修改的数据 。

2、不是很重要的数据,允许出现偶尔并发的数据 。

3、不会被并发访问的数据 。

4、常量数据 。   

不适合存放到第二级缓存的数据 ?   
1、经常被修改的数据 。

2、绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发 。   
3
、与其他应用共享的数据 。   

Hibernate找对象何应用缓存?
当Hibernate根据ID访问数据对象时候首先从Session级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到再查询数据库把结按照ID放入缓存,删除、更新、增加数据时候同时更新缓存 。


Hibernate
管理缓存实例
无论何时我们管理Hibernate缓存(Managing the caches)时给save()、update()或saveOrUpdate()方法传递一个对象时或使用load()、 get()、list()、iterate() 或

scroll()方法获得一个对象时,该对象都被加入到Session内部缓存中 。
当随flush()方法被调用时对象状态会和数据库取得同步。如果你不希望此同步操作发生或者你正处理大量对象、需要对有效管理内存时,你可以调用evict()方法级缓存去掉些对象及其集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值