⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachelevel2test.java

📁 hibernate二级缓存测试策略详细介绍了测试用例和配置参数设置
💻 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 + -