我可以使用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();如果“是”,我可以使用什么cache.provider_class?( Hibernate 4.3.8中不推荐使用SingletonEhCacheProvider)。
发布于 2015-03-12 12:49:03
如果要在应用程序中使用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>标记之后。就这样。
发布于 2015-03-12 15:00:38
您可以在createQuery中使用“查询缓存”!您必须将setCacheable(true)添加到HQL查询中
Query query = session.createQuery("from Student where studentId = :id ");
query.setParameter("id", 5).setCacheable(true);您可以使用这个配置 (hibernate 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>这对我来说很管用
https://stackoverflow.com/questions/29009961
复制相似问题