1.hibernate.cfg.xml配置如下
<!-- 设置二级缓存供应商 -->
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
<!-- 开启二级缓存 -->
<property name="cache.use_second_level_cache">
true
</property>
<!-- 开启二级缓存统计机制 -->
<property name="generate_statistics">
true
</property>
2 .Privilege的hbm.xml配置如下
<hibernate-mapping>
<class name="com.back.domain.privilege.Privilege" table="PRIVILEGE">
<cache usage="read-only"/>
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="increment" />
</id>
<property name="role" type="java.lang.String">
<column name="ROLE" />
</property>
<set name="uers" table="user_privilege" cascade="save-update">
<key>
<column name="PID" />
</key>
<many-to-many class="com.back.domain.user.User" column="UID" />
</set>
</class>
</hibernate-mapping>
3.使用二级缓存
SessionFactory sessionFactory=SessionFactoryUtils.getSesessionFactory();
Session session=sessionFactory.openSession();
Query query=session.createQuery("from com.back.domain.privilege.Privilege");
List<Privilege> list=query.list();
for(Privilege user:list){
System.out.println(user.getRole());
}
System.out.println("二级缓存有:"+sessionFactory.getStatistics().getEntityLoadCount());
session.close();
System.out.println("--------------------");
System.out.println("二级缓存有:"+sessionFactory.getStatistics().getEntityLoadCount());
Session session2=sessionFactory.openSession();
Query query2=session2.createQuery("from com.back.domain.privilege.Privilege where id=1");
Iterator<Privilege> iterator=query2.iterate();
while(iterator.hasNext()){
System.out.println(iterator.next().getRole());
}
System.out.println("二级缓存有:"+sessionFactory.getStatistics().getEntityLoadCount());
session2.close();
}
在加入ehcache.xml配置文件时所产生的编译错误异常!
net.sf.ehcache.CacheException: Error configuring from file:/F:/Struts2/Hibernate21/bin/ehcache.xml. Initial cause was Error configuring from input stream. Initial ca......
答案就在这里:Hibernate二级缓存问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
测试了很久,都有使用二级缓存,不过我用的自己的项目,如果可以的话,把项目打包过来看看。