hibernate(六)一級キャッシュ、二級キャッシュケース


1.二次キャッシュを実装するには、次のjarパッケージを追加する必要があります.
   ehcache-core-2.4.3.jar、hibernate-core-4.2.3.Final.jar、slf4j-api-1.6.6.jar
2.プロファイルの変更が必要
   hibernate.cfg.xml
  


   
                com.mysql.jdbc.Driver         jdbc:mysql://127.0.0.1:3306/hibernate_db         root         beanGou
                1
                org.hibernate.dialect.MySQLDialect
                thread
  org.hibernate.cache.ehcache.EhCacheRegionFactory         ehcache2.xml                 true         true
                true                         update
              


クラスに2次キャッシュを設定する場合は、次のようにプロファイルを変更します.
  Employee.hbm.xml


                                                       

3.テストコード
@Test
	public void get() {
		Session session = HibernateUtil.getSession();
		Employee employee = (Employee) session.get(Employee.class, 1);
		employee = (Employee) session.get(Employee.class, 1);
		System.out.println(employee.getName());
		session.evict(employee);
	
		employee = (Employee) session.get(Employee.class, 1);
		session.close();
		Statistics statistics = HibernateUtil.getSessionFactory().getStatistics();
		System.out.println(statistics);
		System.out.println("   :" + statistics.getSecondLevelCacheHitCount());
		System.out.println("   :" + statistics.getSecondLevelCacheMissCount());
		System.out.println("   :" + statistics.getSecondLevelCachePutCount());
	}

注意:HibernateUtilクラスとgetSessionFactoryメソッドを追加
package com.sinoi.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static SessionFactory factory;
	private static Session session;

	private HibernateUtil() {
	}

	public static SessionFactory getSessionFactory() {
		if (factory == null) {
			factory = new Configuration().configure().buildSessionFactory();
		}
		return factory;
	}
	
	public static Session getSession() {
		if (session == null) {
			return getSessionFactory().openSession();
		} else {
			return session;
		}
	}
}