package com.istc.Utilities;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.io.File;
/**
* Created by lurui on 2017/2/3 0003.
* Hibernate版本为5.2.7Final
*/
public class HibernateUtils {
@Resource
private static SessionFactory sessionFactory;
private static Session session;
private HibernateUtils(){
}
// 交给Spring管理后, 不需要进行hibernate的sessionFactory的管理
// 否则用一下的代码对hibernate进行初始化
static {
Configuration cfg = new Configuration().configure(new File("src\\com.istc.config\\hibernate.cfg.xml"));
sessionFactory = cfg.buildSessionFactory();
}
/**
* 获取数据库Session对象
*/
public static Session getSession(){
//如果当前线程有session则返回该session
//如果没有则创建,且自动关闭session,必须要代码中显式关闭session
return sessionFactory.getCurrentSession();
}
/**
* 关闭数据库Session对象
*/
public static void closeSession(){
if (session != null && session.isOpen())
session.close();
}
/***
* 关闭传入的数据库Session对象
*/
public static void closeSession(Session session){
if (session != null && session.isOpen())
session.close();
}
/**
* 关闭整个hibernate的sessionFactory
*/
public static void close(){
if(sessionFactory !=null && sessionFactory.isOpen())
sessionFactory.close();
}
}