package be.redtree.sql; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import be.redtree.model.Field; import be.redtree.model.FieldResult; import be.redtree.model.Form; import be.redtree.model.FormResult; import be.redtree.model.MultiValue; import be.redtree.model.SingleValue; import com.liferay.portal.kernel.util.PropsUtil; public class HibernateUtil { private static SessionFactory sessionFactory; private static ServiceRegistry serviceRegistry; private static SessionFactory getSessionFactory() { try { if (sessionFactory == null) { Configuration config = new Configuration(); config.addAnnotatedClass(Field.class); config.addAnnotatedClass(Form.class); config.addAnnotatedClass(MultiValue.class); config.addAnnotatedClass(SingleValue.class); config.addAnnotatedClass(FormResult.class); config.addAnnotatedClass(FieldResult.class); config.setProperty("hibernate.connection.driver_class", PropsUtil.get("jdbc.default.driverClassName")); config.setProperty("hibernate.connection.url", PropsUtil.get("jdbc.default.url")); config.setProperty("hibernate.connection.username", PropsUtil.get("jdbc.default.username")); config.setProperty("hibernate.connection.password", PropsUtil.get("jdbc.default.password")); config.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); config.setProperty("hibernate.cache.region.factory_class", "net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"); config.setProperty("hibernate.cache.use_query_cache", "false"); config.setProperty("hibernate.cache.use_second_level_cache", "false"); config.setProperty("hibernate.current_session_context_class", "thread"); config.setProperty("hibernate.hbm2ddl.auto", "update"); /* * C3p0 */ config.setProperty("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider"); config.setProperty("hibernate.c3p0.acquire_increment", "1"); config.setProperty("hibernate.c3p0.idle_test_period", "300"); config.setProperty("hibernate.c3p0.timeout", "1"); config.setProperty("hibernate.c3p0.max_size", "25"); config.setProperty("hibernate.c3p0.min_size", "1"); config.setProperty("hibernate.c3p0.max_statement", "0"); config.setProperty("hibernate.c3p0.preferredTestQuery", "select 1;"); serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); sessionFactory = config.buildSessionFactory(serviceRegistry); } } catch (Throwable e) { throw new ExceptionInInitializerError(e); } return sessionFactory; } private static Session openSession(SessionFactory sessionFactory) { return sessionFactory.getCurrentSession(); } public static Session getSession() { Session session = openSession(getSessionFactory()); Transaction tx = session.beginTransaction(); return session; } public static void shutDown(Session session) { session.getTransaction().commit(); if ((session != null) && session.isOpen()) { session.close(); } } }