Hibernate的三种缓存
一级缓存
hibernate的一级缓存是跟session绑定的,那么一级缓存的生命周期与session的生命周期一致,因此,一级缓存也叫session级缓存或者事务级缓存。
支持一级缓存的方法有:
query.get()
query.load()
query.iterate() 只支持实体对象的时候,查询普通属性是不支持的
list方法会向一级缓存中放置数据 但是起自身不使用缓存
管理一级缓存:
session.clear
session.evict(Object obj)
在大批量数据操作的时候,如何避免一次性大量的实体数据导致内存溢出
先flush,再clear
如果数据量特别大,则考虑用jdbc实现,如果jdbc仍不能满足,则考虑采用数据库本身特定导入工具。
二级缓存
二级缓存也称为进程级缓存或者sessionfactory级的缓存,二级缓存可以被所有的session共享,二级缓存的生命周期跟sessionfactory的生命周期一致的。
二级缓存使用(echache)
二级缓存管理
可使用session.setCacheMode(CacheMode.IGNORE);进行管理
查询缓存
其是针对普通属性结果集的缓存,对于实体对象的结果集只缓存id
查询缓存的生命周期,当关联表的数据发生修改,那么查询缓存的生命周期结束。
配置:
使用:
//必须手动启用查询缓存 iterate()不使用查询缓存 list会用
query2.setCacheable(true);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。