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 org.osbo.framework.core.persist; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.osbo.framework.core.util.UtilHibernate; /** * * @author programmercito */ public class Persistence { private final Session session; private final Transaction transaction; private final SessionFactory sessionFactory; private final int tipo; public static final int OPENSESSIONWITHCLOSE = 1; public static final int CURRENTSESSION = 2; /* * Metodo constructor para comenzar haciendo una transaccion y abriendo una session nueva cuando se necesite */ public Persistence() { sessionFactory = UtilHibernate.getSessionFactory(); this.session = sessionFactory.openSession(); transaction = session.beginTransaction(); tipo = OPENSESSIONWITHCLOSE; } public void insert(Object o) { this.session.persist(o); } public void update(Object o) { session.save(o); } public void remove(Object o) { session.delete(o); } public void close() { if (tipo == OPENSESSIONWITHCLOSE) { transaction.commit(); session.close(); } } public Session getCurrentSession() { return session; } public Transaction getCurrentTransaction() { return transaction; } public void cancel() { transaction.rollback(); } /* * Para su uso en aplicaciones de escritorio o consola no web */ public void shutDown() { try { sessionFactory.close(); StandardServiceRegistryBuilder.destroy(sessionFactory.getSessionFactoryOptions().getServiceRegistry()); } catch (Throwable t) { System.err.println("Exception while closing session factory: " + t); } } }