hibernate二级缓存(xml写法)
来源:互联网 发布:雅居乐找软件测试 编辑:程序博客网 时间:2024/05/18 02:37
如果想使用二级缓存的话,要使用jar文件,maven导入下面这个代码
<!-- 二级缓存导的包 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>5.0.7.Final</version> </dependency>
在hibernate.cfg.xml中配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sxt</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.show_sql">true</property> <!-- 启用二级缓存 --> <property name="cache.use_second_level_cache">true</property> <!-- 配置二级缓存的区域 --> <property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> <mapping class="com.sxt.beans.Buser" /> <mapping resource="com/sxt/beans/Right.hbm.xml" /> <mapping resource="com/sxt/beans/Role.hbm.xml" /> <mapping resource="com/sxt/beans/User.hbm.xml" /> </session-factory></hibernate-configuration>
还要声明你要开启那个bean的二级缓存,也就是你要在bean对应的.hbm.xml中配置上这个话<cache usage="read-write" />
下面这个就是在userbean对应的User.hbm.xml文件中配置的
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- 用户表 --><hibernate-mapping> <class name="com.sxt.beans.User" table="t_user"> <!-- 声明配置的是读和写 --> <cache usage="read-write" /> <id name="userid"> <generator class="identity"></generator> </id> <property name="userName"></property> <property name="userPass"></property> <!-- 和权限表之间的关系 --> <many-to-one name="role" column="roleld" class="com.sxt.beans.Role"></many-to-one> </class></hibernate-mapping>
测试
package com.sxt.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.service.ServiceRegistry;import com.sxt.beans.User;/** * 二级缓存 * * @author Administrator * */public class Test { public static void main(String[] args) { ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure().build(); // 获取sessionFactory对象 SessionFactory sessionFactory = new MetadataSources(serviceRegistry) .buildMetadata().buildSessionFactory(); // 获取会话对象 Session session = sessionFactory.openSession(); Transaction tran = session.beginTransaction(); User u = session.get(User.class, 5); System.out.println(u.getUserName()); tran.commit(); session.close(); Session session1 = sessionFactory.openSession(); Transaction tran1 = session1.beginTransaction(); User u2 = session1.get(User.class, 5); System.out.println(u2.getUserName()); tran1.commit(); session1.close(); }}
//测试,如果第二次查询的时候没有去数据库查询, 就说明配置成功了,注意是生成了两个session 不是两个sessionFactory,二级缓存的数据就是存在sessionFactory里面的
阅读全文