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(); } }