Java tutorial
/* * Copyright (c) 2012, SHIWA * * This file is part of TrianaCloud. * * TrianaCloud 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 * (at your option) any later version. * * TrianaCloud 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 TrianaCloud. If not, see <http://www.gnu.org/licenses/>. */ package org.trianacode.TrianaCloud.Utils; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class DAO { private static SessionFactory sessionFactory; @SuppressWarnings("FieldCanBeLocal") private static ServiceRegistry serviceRegistry; private static final ThreadLocal session = new ThreadLocal(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); return sessionFactory; } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); ex.printStackTrace(); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { if (sessionFactory == null) { buildSessionFactory(); } return sessionFactory; } @SuppressWarnings("unchecked") public static Session getSession() { Session session = (Session) DAO.session.get(); if (session == null) { session = getSessionFactory().openSession(); DAO.session.set(session); } return session; } protected void begin() { getSession().beginTransaction(); } protected void commit() { getSession().getTransaction().commit(); } @SuppressWarnings("unchecked") protected void rollback() { try { getSession().getTransaction().rollback(); } catch (HibernateException e) { System.out.println(e.getMessage()); } try { getSession().close(); } catch (HibernateException e) { System.out.println(e.getMessage()); } DAO.session.set(null); } @SuppressWarnings("unchecked") public static void close() { getSession().close(); DAO.session.set(null); } }