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 abstractDao; import Exceptions.DataAccessLayerException; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; /** * * @author Ehab */ public class HibernateFactory { private static SessionFactory sessionFactory; // private static Log log = LogFactory.getLog(HibernateFactory.class); public static SessionFactory buildSessionFactory() throws HibernateException { if (sessionFactory != null) { closeFactory(); } return configureSessionFactory(); } /** * Builds a SessionFactory, if it hasn't been already. * @return */ 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 AnnotationConfiguration(); configuration.configure(); sessionFactory = configuration.buildSessionFactory(); return sessionFactory; } }