hibernate二级缓存配置问题求解...

绝对在乎妮 2013-06-04 01:53:14
简单搭了SSH.用的是srping3.1,struts2.3.8,hibernate4.1.现在想给hibernate配二级缓存,在网上找了好多,都报错。。。
以下是代码:
applicationContext.xml:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/adloocon?autoReconnect=true&useUnicode=true&characterEncoding=utf-8" />
<property name="user" value="root" />
<property name="password" value="123456" />
<!-- 自动重连 -->
<property name="testConnectionOnCheckin" value="true"></property>
<!-- 连接池每隔60秒自动检测数据库连接情况 -->
<property name="idleConnectionTestPeriod" value="60"></property>
<!-- -->
<property name="maxStatements" value="0"></property>
<!-- 响应超时 -->
<property name="checkoutTimeout" value="60000"></property>
<!-- 一次性创建新连接的数目 -->
<property name="acquireIncrement" value="4"></property>
<!-- 初始化时创建的连接数 -->
<property name="initialPoolSize" value="2"></property>
<!-- 最大连接数 -->
<property name="maxPoolSize" value="10"></property>
<property name="numHelperThreads" value="3"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>

<!-- ***底层需要Session.begins...开始事务*** -->
<bean id="txtManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

hibernate.cfg.xml:

<session-factory>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.cache.user_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

<mapping resource="hibernate/AdminUser.hbm.xml"/>
</session-factory>

把二级缓存的去掉,程序运行正常,要是加上<property name="hibernate.cache.user_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
就会报:
Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()Z
at org.hibernate.cache.ehcache.internal.util.HibernateUtil.validateEhcache(HibernateUtil.java:101)
at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.getCache(AbstractEhcacheRegionFactory.java:185)
at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.buildEntityRegion(AbstractEhcacheRegionFactory.java:132)
at org.hibernate.cache.ehcache.EhCacheRegionFactory.buildEntityRegion(EhCacheRegionFactory.java:48)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 59 more
hibernate二级缓存有这么难配么。。。。。。求教了~~~
...全文
774 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28712329 2015-11-19
  • 打赏
  • 举报
回复
请问最后你怎么解决的哦,我也遇到到了,不知道怎么办
liangchengfck1 2013-06-13
  • 打赏
  • 举报
回复
重复包去掉 只留最好高版本的
绝对在乎妮 2013-06-13
  • 打赏
  • 举报
回复
引用 9 楼 splendid_java 的回复:
[quote=引用 7 楼 ljl434841 的回复:] [quote=引用 6 楼 fangmingshijie 的回复:] 多了一个ehcache包。
去掉了ehcache-1.6.2.jar还是报错:

Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()Z
	at org.hibernate.cache.ehcache.internal.util.HibernateUtil.validateEhcache(HibernateUtil.java:101)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.getCache(AbstractEhcacheRegionFactory.java:185)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.buildTimestampsRegion(AbstractEhcacheRegionFactory.java:173)
	at org.hibernate.cache.ehcache.EhCacheRegionFactory.buildTimestampsRegion(EhCacheRegionFactory.java:48)
	at org.hibernate.cache.spi.UpdateTimestampsCache.<init>(UpdateTimestampsCache.java:63)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:510)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
	... 59 more
[/quote]我感觉既然SSH,那hibernate.cfg.xml文件还需要吗?[/quote] 那有没有能成功配置hinernate二级缓存的demo呢?配置在什么文件都可以
xiaopachong625 2013-06-13
  • 打赏
  • 举报
回复
<property name="cache.use_second_level_cache">true</property> <property name="cache.region.factory_class"> org.hibernate.cache.ehcache.EhCacheRegionFactory </property> Hibernate4.X好像就是cache.region.factory_class,provider_class那个好像不行 另外确实SSH就应该配到Spring的bean里面去了
ZHOU西口 2013-06-13
  • 打赏
  • 举报
回复
引用 10 楼 ljl434841 的回复:
[quote=引用 9 楼 splendid_java 的回复:] [quote=引用 7 楼 ljl434841 的回复:] [quote=引用 6 楼 fangmingshijie 的回复:] 多了一个ehcache包。
去掉了ehcache-1.6.2.jar还是报错:

Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()Z
	at org.hibernate.cache.ehcache.internal.util.HibernateUtil.validateEhcache(HibernateUtil.java:101)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.getCache(AbstractEhcacheRegionFactory.java:185)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.buildTimestampsRegion(AbstractEhcacheRegionFactory.java:173)
	at org.hibernate.cache.ehcache.EhCacheRegionFactory.buildTimestampsRegion(EhCacheRegionFactory.java:48)
	at org.hibernate.cache.spi.UpdateTimestampsCache.<init>(UpdateTimestampsCache.java:63)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:510)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
	... 59 more
[/quote]我感觉既然SSH,那hibernate.cfg.xml文件还需要吗?[/quote] 那有没有能成功配置hinernate二级缓存的demo呢?配置在什么文件都可以[/quote]我现在的项目在用,但东西太多,有时间我整理一个简单的demo!
ZHOU西口 2013-06-05
  • 打赏
  • 举报
回复
引用 7 楼 ljl434841 的回复:
[quote=引用 6 楼 fangmingshijie 的回复:] 多了一个ehcache包。
去掉了ehcache-1.6.2.jar还是报错:

Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()Z
	at org.hibernate.cache.ehcache.internal.util.HibernateUtil.validateEhcache(HibernateUtil.java:101)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.getCache(AbstractEhcacheRegionFactory.java:185)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.buildTimestampsRegion(AbstractEhcacheRegionFactory.java:173)
	at org.hibernate.cache.ehcache.EhCacheRegionFactory.buildTimestampsRegion(EhCacheRegionFactory.java:48)
	at org.hibernate.cache.spi.UpdateTimestampsCache.<init>(UpdateTimestampsCache.java:63)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:510)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
	... 59 more
[/quote]我感觉既然SSH,那hibernate.cfg.xml文件还需要吗?
  • 打赏
  • 举报
回复
你有好多包都不止重复一次。该去的去掉。
绝对在乎妮 2013-06-05
  • 打赏
  • 举报
回复
引用 6 楼 fangmingshijie 的回复:
多了一个ehcache包。
去掉了ehcache-1.6.2.jar还是报错:

Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()Z
	at org.hibernate.cache.ehcache.internal.util.HibernateUtil.validateEhcache(HibernateUtil.java:101)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.getCache(AbstractEhcacheRegionFactory.java:185)
	at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.buildTimestampsRegion(AbstractEhcacheRegionFactory.java:173)
	at org.hibernate.cache.ehcache.EhCacheRegionFactory.buildTimestampsRegion(EhCacheRegionFactory.java:48)
	at org.hibernate.cache.spi.UpdateTimestampsCache.<init>(UpdateTimestampsCache.java:63)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:510)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
	... 59 more
  • 打赏
  • 举报
回复
多了一个ehcache包。
绝对在乎妮 2013-06-04
  • 打赏
  • 举报
回复
引用 4 楼 fangmingshijie 的回复:
你没有ehcache-core-2.4.3.jar吧?

还改为<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

有这个包的。。。

改为<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>后,报:
Caused by: java.lang.NoSuchMethodError: net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()Z
at org.hibernate.cache.ehcache.internal.util.HibernateUtil.validateEhcache(HibernateUtil.java:101)
at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.getCache(AbstractEhcacheRegionFactory.java:185)
at org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory.buildTimestampsRegion(AbstractEhcacheRegionFactory.java:173)
at org.hibernate.cache.ehcache.EhCacheRegionFactory.buildTimestampsRegion(EhCacheRegionFactory.java:48)
at org.hibernate.cache.spi.UpdateTimestampsCache.<init>(UpdateTimestampsCache.java:63)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:510)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 54 more
  • 打赏
  • 举报
回复
你没有ehcache-core-2.4.3.jar吧? 还改为<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
绝对在乎妮 2013-06-04
  • 打赏
  • 举报
回复
引用 2 楼 fangmingshijie 的回复:
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>改为 <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
改了之后,报: Caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given, 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, is available in the classpath). at org.hibernate.cache.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:69) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782) at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ... 59 more
  • 打赏
  • 举报
回复
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>改为 <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
ZHOU西口 2013-06-04
  • 打赏
  • 举报
回复
我的博客:点击这里

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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