Hibernate 工具类

package com.newer;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;


/**
 * HibernateSessionFactory 工具类 <br/>
 * 此类用于获取 sessionFactory、session等
 */

public class HibernateSessionFactory {

    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";  //位置classPath里面: 

    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;
    
   //private  static Configuration configuration = new Configuration(); //XML配置时使用
    private  static Configuration configuration = new AnnotationConfiguration(); //@注解配置时使用

    static {
              try {
                     configuration.configure(configFile);
                     sessionFactory = configuration.buildSessionFactory();
              } catch (Exception e) {
                     System.err.println("%%%% Error Creating SessionFactory %%%%");
                     e.printStackTrace();
             }
    }
 
   /**
     * 构造方法
     */
    private HibernateSessionFactory() {

    }
 

    /**
      * 获取Session的方法 <br/>
      * session使用完后应 close()释放掉<br/>
      * 因为每个session 都会带上一个数据库连接
      * @return
      */
    public static Session getSession() throws HibernateException {
            Session session = (Session) threadLocal.get();

            if (session == null || !session.isOpen()) {
                     if (sessionFactory == null) {
                                    rebuildSessionFactory();
                     }
                     session = (sessionFactory != null) ? sessionFactory.openSession() : null;
                     threadLocal.set(session);
            }

            return session;
    }

    public static void rebuildSessionFactory() {
            try {
                    configuration.configure(configFile);
                    sessionFactory = configuration.buildSessionFactory();
            } catch (Exception e) {
                    System.err.println("%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
            }
    }

    public static void closeSession() throws HibernateException {
            Session session = (Session) threadLocal.get();
            threadLocal.set(null);

            if (session != null) {
                    session.close();
            }
    }

    /**
     * 获取sessionFactory的方法
     * @return
     */
    public static org.hibernate.SessionFactory getSessionFactory() {
               return sessionFactory;
    }

    /**
     * 清空 sessionFactory 的方法
     * @return
     */
    public static void setConfigFile(String configFile) {
              HibernateSessionFactory.configFile = configFile;
              sessionFactory = null;
    }

    /**
     * 获取 configuration 的方法
     * @return
     */
   public static Configuration getConfiguration() {
             return configuration;
   }

} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值