使用 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