hibernate二级缓存的配置
2017-05-23 18:59
190 查看
hibernate的二级缓存配置三种,类缓存、集合缓存、查询缓存。
Hibernate的缓存机制 主要是根据OID的形式查询的
一、类缓存
public class App {
private static SessionFactory sessionFactory = new Configuration()//
.configure()//
.addClass(Department.class)// 添加Hibernate实体类(加载对应的映射文件)
.addClass(Employee.class)// 添加Hibernate实体类(加载对应的映射文件)
.buildSessionFactory();
// 测试一级缓存(Session缓存)
@Test
public void testSessionCache() throws Exception {
// ===================== 第1个Session
Session session = sessionFactory.openSession();
session.beginTransaction();
Employee employee = (Employee) session.get(Employee.class,1); // 获取
System.out.println(employee);
session.getTransaction().commit();
session.close();
// ===================== 第2个Session
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
//根据oID查找
Employee employee2 = (Employee) session2.get(Employee.
b170
class,1); // 获取
System.out.println(employee2);
session2.getTransaction().commit();
session2.close();
}
// 测试二级缓存
@Test
public void testSecondCache() throws Exception {
// ===================== 第1个Session
Session session = sessionFactory.openSession();
session.beginTransaction();
Department department = (Department) session.get(Department.class, 1); // 获取
System.out.println(department.getName());
System.out.println(department.getEmployees());
session.getTransaction().commit();
session.close();
// ===================== 第2个Session
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
Department department2 = (Department) session2.get(Department.class, 1); // 获取
System.out.println(department2.getName());
System.out.println(department2.getEmployees());
session2.getTransaction().commit();
session2.close();
}
类缓存的配置:
类缓存的配置可以在实体映射中配置 也可以在hibernate.cfg.xml中配置
在hibernate.cfg.xml中配置如下:
步骤1:
设置类缓存,使用二级缓存
<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
步骤二、
指定要使用二级缓存的类
<class-cache usage="read-only" class="包名.类名" />
集合缓存:
<collection-cache usage="read-only" collection="包名.类名.你类中的set 的命名" />
查询缓存:
<property name="cache.use_query_cache">true</property>
public void testQueryCache3() throws Exception {
// ===================== 第1个Session
Session session = sessionFactory.openSession();
session.beginTransaction();
List list = session.createQuery("FROM Employee e WHERE e.id<18")//
.setCacheable(true)// 是否使用查询缓存,需要在hibernate.cfg.xml中开启查询缓存才行
.list();
System.out.println(list);
session.getTransaction().commit();
session.close();
System.out.println("\n------------------\n");
// ===================== 第2个Session
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
List list2 = session2.createQuery("FROM Employee e WHERE e.id<18")//
.setCacheable(true)// 是否使用查询缓存
.list();
System.out.println(list2);
session2.getTransaction().commit();
session2.close();
}
文章只是自己做的笔记,若有朋友参考学习请百度其他网友的。
Hibernate的缓存机制 主要是根据OID的形式查询的
一、类缓存
public class App {
private static SessionFactory sessionFactory = new Configuration()//
.configure()//
.addClass(Department.class)// 添加Hibernate实体类(加载对应的映射文件)
.addClass(Employee.class)// 添加Hibernate实体类(加载对应的映射文件)
.buildSessionFactory();
// 测试一级缓存(Session缓存)
@Test
public void testSessionCache() throws Exception {
// ===================== 第1个Session
Session session = sessionFactory.openSession();
session.beginTransaction();
Employee employee = (Employee) session.get(Employee.class,1); // 获取
System.out.println(employee);
session.getTransaction().commit();
session.close();
// ===================== 第2个Session
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
//根据oID查找
Employee employee2 = (Employee) session2.get(Employee.
b170
class,1); // 获取
System.out.println(employee2);
session2.getTransaction().commit();
session2.close();
}
// 测试二级缓存
@Test
public void testSecondCache() throws Exception {
// ===================== 第1个Session
Session session = sessionFactory.openSession();
session.beginTransaction();
Department department = (Department) session.get(Department.class, 1); // 获取
System.out.println(department.getName());
System.out.println(department.getEmployees());
session.getTransaction().commit();
session.close();
// ===================== 第2个Session
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
Department department2 = (Department) session2.get(Department.class, 1); // 获取
System.out.println(department2.getName());
System.out.println(department2.getEmployees());
session2.getTransaction().commit();
session2.close();
}
类缓存的配置:
类缓存的配置可以在实体映射中配置 也可以在hibernate.cfg.xml中配置
在hibernate.cfg.xml中配置如下:
步骤1:
设置类缓存,使用二级缓存
<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
步骤二、
指定要使用二级缓存的类
<class-cache usage="read-only" class="包名.类名" />
集合缓存:
<collection-cache usage="read-only" collection="包名.类名.你类中的set 的命名" />
查询缓存:
<property name="cache.use_query_cache">true</property>
public void testQueryCache3() throws Exception {
// ===================== 第1个Session
Session session = sessionFactory.openSession();
session.beginTransaction();
List list = session.createQuery("FROM Employee e WHERE e.id<18")//
.setCacheable(true)// 是否使用查询缓存,需要在hibernate.cfg.xml中开启查询缓存才行
.list();
System.out.println(list);
session.getTransaction().commit();
session.close();
System.out.println("\n------------------\n");
// ===================== 第2个Session
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
List list2 = session2.createQuery("FROM Employee e WHERE e.id<18")//
.setCacheable(true)// 是否使用查询缓存
.list();
System.out.println(list2);
session2.getTransaction().commit();
session2.close();
}
文章只是自己做的笔记,若有朋友参考学习请百度其他网友的。
相关文章推荐
- hibernate二级缓存配置
- Hibernate的二级缓存的配置
- hibernate的二级缓存的配置使用
- spring中配置hibernate二级缓存
- 为Spring集成的Hibernate配置二级缓存
- Spring视频学习(十三)配置Hibernate的二级缓存
- Hibernate使用ehcahe进行二级缓存的配置
- hibernate一级缓存,二级缓存,三级缓存,缓存算法及配置。
- hibernate二级缓存的配置
- Spring+Hibernate下配置Hibernate二级缓存EhCache
- Hibernate中二级缓存的配置和使用
- 为Spring集成的Hibernate配置二级缓存
- Hibernate3 二级缓存的使用配置细节
- 为Spring集成的Hibernate配置二级缓存
- hibernate二级缓存的配置
- hibernate二级缓存配置
- Hibernate中二级缓存的配置和使用
- 配置Hibernate二级缓存--echcache
- Hibernate配置Ehcache二级缓存
- hibernate一级缓存,二级缓存,三级缓存,缓存算法及配置。