1 package hu.elte.tribus.sf; 2 3 import org.hibernate.HibernateException; 4 import org.hibernate.Session; 5 import org.hibernate.cfg.Configuration; 6 7 /*** 8 * Configures and provides access to Hibernate sessions, tied to the 9 * current thread of execution. Follows the Thread Local Session 10 * pattern, see {@link http://hibernate.org/42.html }. 11 * 12 * @deprecated it was very nice but it is gone an we are not missing it at all :))) 13 */ 14 public class HibernateSessionFactory { 15 16 /*** 17 * Location of hibernate.cfg.xml file. 18 * Location should be on the classpath as Hibernate uses 19 * #resourceAsStream style lookup for its configuration file. 20 * The default classpath location of the hibernate config file is 21 * in the default package. Use #setConfigFile() to update 22 * the location of the configuration file for the current session. 23 */ 24 private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; 25 private static final ThreadLocal threadLocal = new ThreadLocal(); 26 private static Configuration configuration = new Configuration(); 27 private static org.hibernate.SessionFactory sessionFactory; 28 private static String configFile = CONFIG_FILE_LOCATION; 29 30 private HibernateSessionFactory() { 31 } 32 33 /*** 34 * Returns the ThreadLocal Session instance. Lazy initialize 35 * the <code>SessionFactory</code> if needed. 36 * 37 * @return Session 38 * @throws HibernateException 39 */ 40 public static Session getSession() throws HibernateException { 41 Session session = (Session) threadLocal.get(); 42 43 if (session == null || !session.isOpen()) { 44 if (sessionFactory == null) { 45 rebuildSessionFactory(); 46 } 47 session = (sessionFactory != null) ? sessionFactory.openSession() 48 : null; 49 threadLocal.set(session); 50 } 51 52 return session; 53 } 54 55 /*** 56 * Rebuild hibernate session factory 57 * 58 */ 59 public static void rebuildSessionFactory() { 60 try { 61 configuration.configure(configFile); 62 sessionFactory = configuration.buildSessionFactory(); 63 } catch (Exception e) { 64 System.err 65 .println("%%%% Error Creating SessionFactory %%%%"); 66 e.printStackTrace(); 67 } 68 } 69 70 /*** 71 * Close the single hibernate session instance. 72 * 73 * @throws HibernateException 74 */ 75 public static void closeSession() throws HibernateException { 76 Session session = (Session) threadLocal.get(); 77 threadLocal.set(null); 78 79 if (session != null) { 80 session.close(); 81 } 82 } 83 84 /*** 85 * return session factory 86 * 87 */ 88 public static org.hibernate.SessionFactory getSessionFactory() { 89 return sessionFactory; 90 } 91 92 /*** 93 * return session factory 94 * 95 * session factory will be rebuilded in the next call 96 */ 97 public static void setConfigFile(String configFile) { 98 HibernateSessionFactory.configFile = configFile; 99 sessionFactory = null; 100 } 101 102 /*** 103 * return hibernate configuration 104 * 105 */ 106 public static Configuration getConfiguration() { 107 return configuration; 108 } 109 110 }