Java tutorial
/******* BEGIN LICENSE BLOCK ***** * Versin: GPL 2.0/CDDL 1.0/EPL 1.0 * * Los contenidos de este fichero estn sujetos a la Licencia * Pblica General de GNU versin 2.0 (la "Licencia"); no podr * usar este fichero, excepto bajo las condiciones que otorga dicha * Licencia y siempre de acuerdo con el contenido de la presente. * Una copia completa de las condiciones de de dicha licencia, * traducida en castellano, deber estar incluida con el presente * programa. * * Adicionalmente, puede obtener una copia de la licencia en * http://www.gnu.org/licenses/gpl-2.0.html * * Este fichero es parte del programa opensiXen. * * OpensiXen es software libre: se puede usar, redistribuir, o * modificar; pero siempre bajo los trminos de la Licencia * Pblica General de GNU, tal y como es publicada por la Free * Software Foundation en su versin 2.0, o a su eleccin, en * cualquier versin posterior. * * Este programa se distribuye con la esperanza de que sea til, * pero SIN GARANT?A ALGUNA; ni siquiera la garanta implcita * MERCANTIL o de APTITUD PARA UN PROPSITO DETERMINADO. Consulte * los detalles de la Licencia Pblica General GNU para obtener una * informacin ms detallada. * * TODO EL CDIGO PUBLICADO JUNTO CON ESTE FICHERO FORMA PARTE DEL * PROYECTO OPENSIXEN, PUDIENDO O NO ESTAR GOBERNADO POR ESTE MISMO * TIPO DE LICENCIA O UNA VARIANTE DE LA MISMA. * * El desarrollador/es inicial/es del cdigo es * FUNDESLE (Fundacin para el desarrollo del Software Libre Empresarial). * Indeos Consultoria S.L. - http://www.indeos.es * * Contribuyente(s): * Eloy Gmez Garca <eloy@opensixen.org> * * Alternativamente, y a eleccin del usuario, los contenidos de este * fichero podrn ser usados bajo los trminos de la Licencia Comn del * Desarrollo y la Distribucin (CDDL) versin 1.0 o posterior; o bajo * los trminos de la Licencia Pblica Eclipse (EPL) versin 1.0. Una * copia completa de las condiciones de dichas licencias, traducida en * castellano, debern de estar incluidas con el presente programa. * Adicionalmente, es posible obtener una copia original de dichas * licencias en su versin original en * http://www.opensource.org/licenses/cddl1.php y en * http://www.opensource.org/licenses/eclipse-1.0.php * * Si el usuario desea el uso de SU versin modificada de este fichero * slo bajo los trminos de una o ms de las licencias, y no bajo los * de las otra/s, puede indicar su decisin borrando las menciones a la/s * licencia/s sobrantes o no utilizadas por SU versin modificada. * * Si la presente licencia triple se mantiene ntegra, cualquier usuario * puede utilizar este fichero bajo cualquiera de las tres licencias que * lo gobiernan, GPL 2.0/CDDL 1.0/EPL 1.0. * * ***** END LICENSE BLOCK ***** */ package org.opensixen.dev.omvc.util; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.criterion.Restrictions; import org.opensixen.dev.omvc.interfaces.IPO; /** * HSession * Helper for Hibernate * * @author Eloy Gomez * Indeos Consultoria http://www.indeos.es */ public class HSession { private static Logger s_log = Logger.getLogger(HSession.class); /** Hibernate Session Factory */ private static final SessionFactory sessionFactory; /** * Inicio estatico del factory de Hibernate */ static { try { sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); } catch (Throwable ex) { throw new ExceptionInInitializerError(ex); } } /** * Develve la sesion de Hibernate * @return * @throws HibernateException */ public static Session getSession() throws HibernateException { return sessionFactory.openSession(); } /** * Devuelve un Criteria con los filtros de seguridad apropiados * @param persistentClass * @return */ public static Criteria getCriteria(Class persistentClass) { Session sess = getSession(); return getCriteria(sess, persistentClass); } /** * Devuelve un Criteria con los filtros de seguridad apropiados * @param sess * @param persistentClass * @return */ public static Criteria getCriteria(Session sess, Class persistentClass) { if (sess == null) { sess = getSession(); } Criteria crit = sess.createCriteria(persistentClass); return crit; } /** * Graba un objeto en base de datos.. * @param o */ public static boolean save(Object o) { try { Session sess = HSession.getSession(); sess.beginTransaction(); save(sess, o); sess.getTransaction().commit(); s_log.info("Guardado con exito."); return true; } catch (Exception e) { e.printStackTrace(); s_log.error("No se ha podido grabar el objeto: " + o.getClass().getCanonicalName(), e); return false; } } /** * Graba un objeto en base de datos.. * @param o Objeto a guardar * @param sess Session */ public static boolean save(Session sess, Object o) throws HibernateException { try { sess.saveOrUpdate(o); s_log.info("Guardado con exito."); return true; } catch (HibernateException e) { s_log.error("No se ha podido grabar el objeto", e); return false; } } /** * Borra un objeto en base de datos.. * @param o Objeto a borrar */ public static void delete(Object o) { try { Session sess = HSession.getSession(); sess.beginTransaction(); delete(sess, o); sess.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } } /** * Borra un objeto en base de datos.. * @param sess Session * @param o Objeto a borrar */ public static void delete(Session sess, Object o) { sess.delete(o); } /** * Devuelve el objeto con ID dado * @param <T> * @param clazz * @param id * @return */ public static <T extends IPO> T get(Class<T> clazz, int id) { Criteria crit = getCriteria(clazz); crit.add(Restrictions.idEq(new Integer(id))); return (T) crit.uniqueResult(); } }