我可以在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中已弃用。
答案 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>
这对我有用