使用 Hibernate 完成 HibernateUtils 類 (適用於單獨使用Hibernate或Struts+Hibernate)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM