导航
  • 全部
...

hibernate 二级缓存如何配置

ccg5230 2012-05-25 09:42:20
测试hibeinate的二级缓存,hibernate 4.1.1 Myeclipse 8.6.出现以下异常:

at com.hsp.view.TestMain.main(TestMain.java:28)
Caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_classis not gaven, please either disable second level cache or set correct region factory class name to property hibernate.cache.region.factory_class (and make sure the second level cache provider, hibernate-infinispan, for example, available in the classpath).
at org.hibernate.cache.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:69)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:347)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1740)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
at com.hsp.util.HibernateUtil.<clinit>(HibernateUtil.java:23)
... 1 more

hibernate.cfg.xml 如下:
<hibernate-configuration>

<session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@127.0.0.1:1521:orcl
</property>
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">
myoralce
</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>

<!-- 配置二级缓存 ,启用二级缓存-->
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">true</property>
<!-- 指定使用哪种二级缓存 -->
<property name="cache.provider_class">org.hibernate.cache.internal.EhCacheProvider</property>
<mapping resource="com/hsp/domain/Department.hbm.xml" />
<mapping resource="com/hsp/domain/Student.hbm.xml" />

<class-cache class="com.hsp.domain.Student" usage="read-write"/>
</session-factory>

</hibernate-configuration>

我发现org.hibernate.cache.internal包中并没有EhCacheProvider这个类,是这个原因导致的吗?还有需要配置ehcache.xml文件吗,我没配置。
...全文
给本帖投票
2298 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xike1221 2013-11-03
  • 打赏
  • 举报
回复
<!-- <property name="cache.use_second_level_cache">true</property> -->我把这一句注释掉了,好像也没问题,不知道是不是我哪里配错了? 其他代码如下: @Entity @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) public class Student {…… //junit4测试代码如下 @Test public void testCache2() { Session ss = HibernateUtil.getSession(); ss.beginTransaction(); Student s = (Student) ss.load(Student.class, 2); System.out.println(s.getName()); ss.getTransaction().commit(); Session ss2 = HibernateUtil.getSession(); ss2.beginTransaction(); Student s2 = (Student) ss2.load(Student.class, 2); System.out.println(s2.getName()); ss2.getTransaction().commit(); }
danyijiangnan 2013-05-23
  • 打赏
  • 举报
回复
引用 3 楼 daveztong 的回复:
hibernate4.x之后修改了这个,但是文档自带的配置文件并没有更正,我一开始也遇到了这个问题。<property name="cache.provider_class">org.hibernate.cache.internal.EhCacheProvider</property> 改成: <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
修改之后测试成功了,可是为什么要这样改呢?默认设置和4.1的文档里面都是<property name="cache.provider_class">org.hibernate.cache.internal.EhCacheProvider</property>
ping22changxin 2012-12-19
  • 打赏
  • 举报
回复
测试成功!谢谢!
daveztong 2012-06-06
  • 打赏
  • 举报
回复
hibernate4.x之后修改了这个,但是文档自带的配置文件并没有更正,我一开始也遇到了这个问题。<property name="cache.provider_class">org.hibernate.cache.internal.EhCacheProvider</property>
改成:
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
ccg5230 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

<property name="cache.provider_class">org.hibernate.cache.internal.EhCacheProvider</property>
改为
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory
</p……
[/Quote]

试过的,错误还是一样。org.hibernate.cache.EhCacheRegionFactory 类包里没有,我倒的包好像有问题
阿甘1976 2012-05-25
  • 打赏
  • 举报
回复
<property name="cache.provider_class">org.hibernate.cache.internal.EhCacheProvider</property>
改为
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory
</property>

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部