Java tutorial
/* * Project: PymeGestApplicationServer * Package: com.pymegest.persistence.hibernate * File: HibernateUtil.java * Date: 12-dic-2013 * Encoding: UTF-8 * License: GPL 3.0 * * Copyright(c) PymeGest 2013 * www.pymegest.com * admin@pymegest.com * * This file is part of Pymegest. * Pymegest is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * Pymegest is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Pymegest. If not, see <http://www.gnu.org/licenses/>. */ package com.pymegest.persistence.hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.context.internal.ThreadLocalSessionContext; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; /** * Hibernate Utility class with a convenient method to get Session Factory * * @author Rafa Hernndez * @version 1.0 * @since 1.0 */ public class HibernateUtil { private static SessionFactory sessionFactory; public static synchronized void buildSessionFactory() { if (sessionFactory == null) { Configuration configuration = new Configuration(); configuration.configure(); configuration.setProperty("hibernate.current_session_context_class", "thread"); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } } public static void openSessionAndBindToThread() { Session session = sessionFactory.openSession(); ThreadLocalSessionContext.bind(session); } public static SessionFactory getSessionFactory() { if (sessionFactory == null) { buildSessionFactory(); } return sessionFactory; } public static void closeSessionAndUnbindFromThread() { Session session = ThreadLocalSessionContext.unbind(sessionFactory); if (session != null) { session.close(); } } public static void closeSessionFactory() { if ((sessionFactory != null) && (sessionFactory.isClosed() == false)) { sessionFactory.close(); } } }