Hibernate二级缓存

时间:2015-03-12 12:37:06

标签: java sql hibernate caching

我可以在Hibernate中使用二级缓存来缓存查询( createSQLQuery ),例如:

List<Student> books = (List<Student>)session.createSQLQuery("select * from Student ");

我可以在Hibernate中使用二级缓存来缓存查询( createQuery ),例如:

Query query = session.createQuery("from Student where studentId = :id ");
query.setParameter("id", 5);
List<Student> list = query.list();

如果&#34;是&#34;,我可以使用 cache.provider_class 吗? (SingletonEhCacheProvider在Hibernate 4.3.8中已弃用。

2 个答案:

答案 0 :(得分:0)

如果要在应用程序中使用Hibernate二级缓存,则需要在hibernat.cfg.xml文件中进行一些更改。 在<session-factory>标记放置

<property name="hibernate.cache.use_second_level_cache">true</property>

<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>  最重要的是,在<cache usage=”read-write” />代码之后将hbm.xml放入每个实体的<id>文件中。 而已。

答案 1 :(得分:0)

你可以使用&#34;查询缓存&#34;用createQuery!你必须将setCacheable(true)添加到你的HQL查询

Query query = session.createQuery("from Student where studentId = :id ");
query.setParameter("id", 5).setCacheable(true);

你可以使用this configuraion(休眠4.3.8)

<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory</property>

这对我有用