JPA环境下使用Hibernate二级缓存
hibernate二级缓存本质上分为两类:
1.对象缓存
2.查询缓存
在JPA环境下,例如Jboss,底层还是通过Hibernate来实现JPA的Query。
下边简单说一下配置的步骤:
1.配置entity
在实体上方加入@Cache
这里我使用了memcached,还有Ehcache、OSchache、或者TreeCache等,主要需配置:
hibernate.cache.use_second_level_cache = true
hibernate.cache.use_query_cache = true
与相应的hibernate.cache.provider_class
3.在程序中使用查询缓存
首先大家需要明确JPA对缓存的规范还没有形成,但JPA实现的厂家都会用hibernate来做JPA的实现,所以通常的方法是将JPA的Query转换成Hibernate的Query,大家用过Hibernate都知道,Hibernate里的Query有个setCacheable(true/false)的方法,这里是设置查询是否进入二级缓存的.
这里需要强调一下,默认的如果不在程序中显示的执行查询缓存声明操作,hibernate是不会对查询的list进行缓存的,默认的在开启hibernate二级缓存时,hibernate只缓存,根据主键id查找的对象,jpa下是find(id, clazz)方法.
下边是转换的代码:为了区分JPA的Query与Hibernate的Query,我写上了全名
4 楼 jfk1983 2011-12-21 我怎么就不行呢