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 aa.PersonDog.dao; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.jboss.logging.Logger; /** * * @author aanciaes */ public class HibernateFactory { private static SessionFactory sessionFactory; private static Logger log = Logger.getLogger(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"); log.info("Hibernate Configuration created successfully"); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()).build(); log.info("ServiceRegistry created successfully"); sessionFactory = configuration.buildSessionFactory(serviceRegistry); log.info("SessionFactory created successfully"); return sessionFactory; } }