首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate二级缓存

Hibernate二级缓存
EN

Stack Overflow用户
提问于 2015-03-12 12:37:06
回答 2查看 332关注 0票数 0

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

代码语言:javascript
复制
List<Student> books = (List<Student>)session.createSQLQuery("select * from Student ");

我是否可以使用Hibernate中的二级缓存进行缓存查询(createQuery),例如:

代码语言:javascript
复制
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)。

EN

回答 2

Stack Overflow用户

发布于 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>标记之后。就这样。

票数 0
EN

Stack Overflow用户

发布于 2015-03-12 15:00:38

您可以在createQuery中使用“查询缓存”!您必须将setCacheable(true)添加到HQL查询中

代码语言:javascript
复制
Query query = session.createQuery("from Student where studentId = :id ");
query.setParameter("id", 5).setCacheable(true);

您可以使用这个配置 (hibernate 4.3.8)

代码语言:javascript
复制
<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>

这对我来说很管用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29009961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档