Hibernate缓存策略之一级缓存
?
缓存相当于Map结构,讲的是命中率,就像Entryset中的key和Value。
?
Hibernate中的缓存:
- 一级缓存,也叫session级别的缓存,缓存的是实体二级缓存,是SessionFactory级别的缓存,缓存的也是实体查询缓存,也是SessionFactory级别的缓存,它缓存的是普通结果集,但如果缓存的是实体则缓存实体的Id列表
session级别的缓存即一级缓存,不能被取消,它一直存在,随着session的关闭,缓存也会随之失效!sessionFactory级别的缓存是可以取消的,甚至不用。
?
??? 现在让我们先来看看session级别的缓存,也就是一级缓存:
可以通过session的load/get操作加载实体对象,通过session的list/iterate查询实体对象,这四种操作都能把实体对象放入一级缓存如:
?
for(int i=0; i<1000000000; i++){Person p = new Person();p.setAddress("xxx");//...p.setXXXsession.save(p);if(i % 100 == 0){session.flush();session.clear();}}??