Hibernater 一级缓存:
Hibernate 一级缓存生命周期很短,和session什么周期一致。所以称事务级缓存。
get() load() interate()均支持一级缓存,
注意:interate()只有在查询实体对象才支持,普通属性查询不支持。
session管理只能通过session.clear(), session.evict() 清除。
避免一次性导入大量数据,会每导入一条就在session中保留一条,最终引起内存溢出。
eg:
for(int i =0; i<100000;i++){
Object o = new Object();
session.save(o);
if(i % 100==0){
session.flush();
session.clear();
}
}
如上所示阶段性的清理一级session缓存,防止大量积压一级缓存而导致内存溢出
Hibernate 一级缓存生命周期很短,和session什么周期一致。所以称事务级缓存。
get() load() interate()均支持一级缓存,
注意:interate()只有在查询实体对象才支持,普通属性查询不支持。
session管理只能通过session.clear(), session.evict() 清除。
避免一次性导入大量数据,会每导入一条就在session中保留一条,最终引起内存溢出。
eg:
for(int i =0; i<100000;i++){
Object o = new Object();
session.save(o);
if(i % 100==0){
session.flush();
session.clear();
}
}
如上所示阶段性的清理一级session缓存,防止大量积压一级缓存而导致内存溢出
本文详细介绍了Hibernate的一级缓存特性及其生命周期,并解释了如何通过get、load和iterate等方法利用一级缓存来提高应用程序的性能。同时,还提供了一个示例代码,展示了如何在批量操作时阶段性地清理缓存,以防止内存溢出。
963

被折叠的 条评论
为什么被折叠?



