缓存
一级缓存(Session) session独享.
二级缓存(SessionFactory) session共享.
二级缓存开启方法
二级缓存默认关闭,开启方法如下:
先引入二级缓存组件包和配置文件 (hibernate-ehcache.jar/ehcache.xml)
org.hibernate
hibernate-ehcache
4.2.21.Final
修改hibernate.cfg.xml配置文件,开启二级缓存配置
true
org.hibernate.cache.ehcache.EhCacheRegionFactory
在映射描述中指定采用二级缓存
@Cache加载类定义前/加到hbm.xml中
@Entity
@Table(name=”NOTE”)
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
public class Note {
… …
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="USER_ID")
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
查询缓存开启方法
一级和二级只能缓存单个对象,查询缓存可以缓存集合。
开启方法如下:
开启二级缓存
在hibernate.cfg.xml中开启查询缓存
true
在执行查询语句之前,调用query.setCacheable(true);
Query query = session.createQuery(“from Note”); query.setCacheable(true); List list = query.list();//执行查询