📄 cachelevel2test.java
字号:
package com.zyg.hibernate;
import java.io.Serializable;
import org.hibernate.CacheMode;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import junit.framework.TestCase;
public class CacheLevel2Test extends TestCase {
/**
* 打开两次session,调用load测试
*
*/
public void testCache1() {
Session session = null;
try {
session = HibernateUtils.getSession();
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名1:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
//打开第二个session
try {
session = HibernateUtils.getSession();
//因为打开了二级缓存,所以本次查询不会发出sql
Student student = (Student)session.get(Student.class, 1);
System.out.println("学生姓名2:" + student.getName());
//Classes aa=(Classes) session.load(Classes.class,1);
//System.out.println("学生班级:" + aa.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
///session.close();
// 打开第二个session
try {
session = HibernateUtils.getSession();
//因为打开了二级缓存,所以本次查询不会发出sql
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名3:" + student.getName());
//Classes aa=(Classes) session.load(Classes.class,1);
//System.out.println("学生班级:" + aa.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
}
/**
* 调用了次load,第一次调用完成后,清除sessionFactory中的二级缓存数据,
* 再开启一个session,调用load
*
*/
public void testCache2() {
Session session = null;
try {
session = HibernateUtils.getSession();
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
//管理二级缓存
SessionFactory factory = HibernateUtils.getSessionFactory();
factory.evict(Student.class);
//打开第二个session
try {
session = HibernateUtils.getSession();
//因为二级缓存已经被清空,所以本次查询将发出一条新的sql
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
}
/**
* 调用了次load,第一次调用完成后,清除sessionFactory中的二级缓存数据,
* 再开启一个session,调用load
*
*/
public void testCache3() {
Session session = null;
try {
session = HibernateUtils.getSession();
//GET的CahceMode,使得session指会从sessionFactory中获取数据
//而不向其中添加数据
session.setCacheMode(CacheMode.GET);
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
//打开第二个session
try {
session = HibernateUtils.getSession();
//因为二级缓存中没有数据,所以发出sql
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
//打开第三个session
try {
session = HibernateUtils.getSession();
session.setCacheMode(CacheMode.PUT);
//不会读数据,所以发出sql
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
//打开第四个session
try {
session = HibernateUtils.getSession();
//不会发出sql
Student student = (Student)session.load(Student.class, 1);
System.out.println("学生姓名:" + student.getName());
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -