Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package services; /** * * @author mado */ import exceptionshandler.DataAccessLayerException; import org.hibernate.*; import org.hibernate.cfg.Configuration; import org.apache.commons.logging.*; public class HibernateFactory { private static SessionFactory sessionFactory; private static Log log = LogFactory.getLog(HibernateFactory.class); /** * Constructs a new Singleton SessionFactory * @return * @throws HibernateException */ public static SessionFactory buildSessionFactory() throws HibernateException { if (sessionFactory != null) { closeFactory(); } return configureSessionFactory(); } /** * Builds a SessionFactory, if it hasn't been already. */ public static SessionFactory buildIfNeeded() throws DataAccessLayerException { if (sessionFactory != null) { return sessionFactory; } try { return configureSessionFactory(); } catch (HibernateException e) { throw new DataAccessLayerException(e); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static Session openSession() throws HibernateException { buildIfNeeded(); return sessionFactory.openSession(); } public static void closeFactory() { if (sessionFactory != null) { try { sessionFactory.close(); } catch (HibernateException ignored) { log.error("Couldn't close SessionFactory", ignored); } } } public static void close(Session session) { if (session != null) { try { session.close(); } catch (HibernateException ignored) { log.error("Couldn't close Session", ignored); } } } public static void rollback(Transaction tx) { try { if (tx != null) { tx.rollback(); } } catch (HibernateException ignored) { log.error("Couldn't rollback Transaction", ignored); } } /** * * @return * @throws HibernateException */ private static SessionFactory configureSessionFactory() throws HibernateException { Configuration configuration = new Configuration(); configuration.configure("hibernate.cfg.xml"); sessionFactory = configuration.buildSessionFactory(); return sessionFactory; } }