hibernate(六)一級キャッシュ、二級キャッシュケース
4324 ワード
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.テストコード
注意:HibernateUtilクラスとgetSessionFactoryメソッドを追加
ehcache-core-2.4.3.jar、hibernate-core-4.2.3.Final.jar、slf4j-api-1.6.6.jar
2.プロファイルの変更が必要
hibernate.cfg.xml
クラスに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;
}
}
}