package com.tida_okinawa.corona.io.dam.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
/**
* Hibernateのセッションを開始するためのインスタンスを作成する。
* ConfigurationやsessionFactoryは複数作成する意味が無いのでSingletonにて処理。
*
* @author S.Minakata
*
*/
public class HibernateSession {
// TODO 20131203 HibernateSessionの運用は、IoServiceの運用に切り替える予定。(最終的にはHibernateSessionはカットする予定)
private static volatile HibernateSession instance;
private HibernateSession() {
serviceRegistry = new ServiceRegistryBuilder().applySettings(new Configuration().configure().getProperties()).buildServiceRegistry();
sessionFactory = new Configuration().configure().buildSessionFactory(serviceRegistry);
}
private ServiceRegistry serviceRegistry;
private SessionFactory sessionFactory;
/**
*
* @return
*/
public static HibernateSession getInstance() {
if (instance == null) {
instance = new HibernateSession();
}
return instance;
}
/**
* セッションオブジェクトを取得する。
* トランザクション処理が必要な場合は{@link Session#beginTransaction()}を利用する。
*
* @return
*/
public Session getSession() {
return sessionFactory.openSession();
}
}