public void doDelete(X registro) {
   try {
     dao.doDelete(registro);
   } catch (HibernateException he) {
     if (getSession().isOpen()) {
       HibernateUtil.rollback(getSession().getTransaction());
       HibernateUtil.closeEditorSession(getEditorId());
     }
     HibernateUtil.procesarError(he);
     session = HibernateUtil.getEditorSession(editorId);
     session.setFlushMode(FlushMode.MANUAL);
     dao.setSession(session);
     HibernateUtil.verSesiones();
   }
 }
 public AbstractController(GenericDAOImpl<X, Long> dao) {
   LOGGER = Logger.getLogger(getClass());
   session = HibernateUtil.getSessionFactory().getCurrentSession();
   session.beginTransaction();
   this.dao = dao;
   this.dao.setSession(session);
 }
 /**
  * Inicializa una sesión de hibernate en base al editor indicado
  *
  * @param id que se asociará a la nueva sesión
  */
 public AbstractController(String editorId, GenericDAOImpl<X, Long> dao) {
   LOGGER = Logger.getLogger(getClass());
   session = HibernateUtil.getEditorSession(editorId);
   session.setFlushMode(FlushMode.MANUAL);
   // session.setFlushMode(FlushMode.NEVER);
   /*
   session = HibernateUtil.getSessionFactory().getCurrentSession();
   session.beginTransaction();
    */
   this.editorId = editorId;
   this.dao = dao;
   this.dao.setSession(session);
 }
 /**
  * Finaliza una sesión de hibernate
  *
  * @param editorId id asociado a la sesión que será finalizada
  */
 public void finalizarSesion() {
   //		System.out.println("Finalizando sesión: " + getEditorId());
   LOGGER.info("Finalizando sesión: " + getEditorId());
   HibernateUtil.closeEditorSession(getEditorId()); // graba en la base de datos
 }
 /** Permite ver las sesiones activas de Hibernate */
 public void verSesiones() {
   HibernateUtil.verSesiones();
 }