HibernateSessionFactory.java
上传用户:lm2018
上传日期:2015-12-12
资源大小:30449k
文件大小:3k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. package com.oa.module.system;
  2. import org.hibernate.HibernateException;
  3. import org.hibernate.Session;
  4. import org.hibernate.cfg.Configuration;
  5. /**
  6.  * Configures and provides access to Hibernate sessions, tied to the
  7.  * current thread of execution.  Follows the Thread Local Session
  8.  * pattern, see {@link http://hibernate.org/42.html}.
  9.  */
  10. public class HibernateSessionFactory {
  11.     /** 
  12.      * Location of hibernate.cfg.xml file.
  13.      * NOTICE: Location should be on the classpath as Hibernate uses
  14.      * #resourceAsStream style lookup for its configuration file. That
  15.      * is place the config file in a Java package - the default location
  16.      * is the default Java package.<br><br>
  17.      * Examples: <br>
  18.      * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml". 
  19.      * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code> 
  20.      */
  21.     private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
  22.     /** Holds a single instance of Session */
  23. private static final ThreadLocal threadLocal = new ThreadLocal();
  24.     /** The single instance of hibernate configuration */
  25.     private static final Configuration cfg = new Configuration();
  26.     /** The single instance of hibernate SessionFactory */
  27.     private static org.hibernate.SessionFactory sessionFactory;
  28.     /**
  29.      * Returns the ThreadLocal Session instance.  Lazy initialize
  30.      * the <code>SessionFactory</code> if needed.
  31.      *
  32.      *  @return Session
  33.      *  @throws HibernateException
  34.      */
  35.     public static Session currentSession() throws HibernateException {
  36.         Session session = (Session) threadLocal.get();
  37. if (session == null || !session.isOpen()) {
  38. if (sessionFactory == null) {
  39. try {
  40. cfg.configure(CONFIG_FILE_LOCATION);
  41. sessionFactory = cfg.buildSessionFactory();
  42. } catch (Exception e) {
  43. System.err
  44. .println("%%%% Error Creating SessionFactory %%%%");
  45. e.printStackTrace();
  46. }
  47. }
  48. session = (sessionFactory != null) ? sessionFactory.openSession()
  49. : null;
  50. threadLocal.set(session);
  51. }
  52.         return session;
  53.     }
  54.     /**
  55.      *  Close the single hibernate session instance.
  56.      *
  57.      *  @throws HibernateException
  58.      */
  59.     public static void closeSession() throws HibernateException {
  60.         Session session = (Session) threadLocal.get();
  61.         threadLocal.set(null);
  62.         if (session != null) {
  63.             session.close();
  64.         }
  65.     }
  66.     /**
  67.      * Default constructor.
  68.      */
  69.     private HibernateSessionFactory() {
  70.     }
  71. }