From 2ebb82bcf2fa79b4b54e05703675aa98a91b3a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Thu, 18 Dec 2025 14:28:35 +0100 Subject: [PATCH] =?UTF-8?q?gesti=C3=B3n=20rollback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aadd/cine/dao/hbnt/ActorDaoHibernate.java | 51 ++++++++++++------ .../cine/dao/hbnt/ContinenteDaoHibernate.java | 52 ++++++++++++------ .../cine/dao/hbnt/DirectorDaoHibernate.java | 51 ++++++++++++------ .../aadd/cine/dao/hbnt/PaisDaoHibernate.java | 53 +++++++++++++------ .../cine/dao/hbnt/PeliculaDaoHibernate.java | 49 ++++++++++++----- 5 files changed, 180 insertions(+), 76 deletions(-) diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java index e64879c..c46c284 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java @@ -2,7 +2,6 @@ package org.lapaloma.aadd.cine.dao.hbnt; import java.util.List; -import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.MutationQuery; @@ -56,43 +55,59 @@ public class ActorDaoHibernate implements IActorDAO { @Override public void crearEntidad(Actor entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Connection, Statement - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); sesion.persist(entidad); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void actualizarEntidad(Actor entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); if (!sesion.contains(entidad)) sesion.merge(entidad); transaccion.commit(); - } catch (Exception e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void borrarEntidadPorClave(Integer clave) { Transaction transaccion = null; - - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); // Borrado de Actor @@ -100,9 +115,15 @@ public class ActorDaoHibernate implements IActorDAO { sesion.remove(actor); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java index dbf4f61..1afd769 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java @@ -2,7 +2,6 @@ package org.lapaloma.aadd.cine.dao.hbnt; import java.util.List; -import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.MutationQuery; @@ -56,53 +55,74 @@ public class ContinenteDaoHibernate implements IContinenteDAO { @Override public void crearEntidad(Continente entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Connection, Statement - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); sesion.persist(entidad); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void actualizarEntidad(Continente entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); if (!sesion.contains(entidad)) sesion.merge(entidad); transaccion.commit(); - } catch (Exception e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void borrarEntidadPorClave(String clave) { Transaction transaccion = null; - - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); Continente continente = sesion.find(Continente.class, clave); sesion.remove(continente); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); - + } finally { + if (sesion != null) { + sesion.close(); + } } } diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/DirectorDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/DirectorDaoHibernate.java index 9ce5c21..0c14ef0 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/DirectorDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/DirectorDaoHibernate.java @@ -2,7 +2,6 @@ package org.lapaloma.aadd.cine.dao.hbnt; import java.util.List; -import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.MutationQuery; @@ -56,52 +55,74 @@ public class DirectorDaoHibernate implements IDirectorDAO { @Override public void crearEntidad(Director entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Connection, Statement - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); sesion.persist(entidad); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void actualizarEntidad(Director entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); if (!sesion.contains(entidad)) sesion.merge(entidad); transaccion.commit(); - } catch (Exception e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void borrarEntidadPorClave(Integer clave) { Transaction transaccion = null; - - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); Director director = sesion.find(Director.class, clave); sesion.remove(director); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PaisDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PaisDaoHibernate.java index 08fb5bf..e9bc45a 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PaisDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PaisDaoHibernate.java @@ -2,7 +2,6 @@ package org.lapaloma.aadd.cine.dao.hbnt; import java.util.List; -import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.MutationQuery; @@ -57,52 +56,74 @@ public class PaisDaoHibernate implements IPaisDAO { @Override public void crearEntidad(Pais entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Connection, Statement - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); - + sesion.persist(entidad); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void actualizarEntidad(Pais entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); if (!sesion.contains(entidad)) sesion.merge(entidad); transaccion.commit(); - } catch (Exception e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void borrarEntidadPorClave(Integer clave) { Transaction transaccion = null; - - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); Pais pais = sesion.find(Pais.class, clave); sesion.remove(pais); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PeliculaDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PeliculaDaoHibernate.java index cc638d3..a51e897 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PeliculaDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/PeliculaDaoHibernate.java @@ -2,7 +2,6 @@ package org.lapaloma.aadd.cine.dao.hbnt; import java.util.List; -import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.MutationQuery; @@ -57,26 +56,34 @@ public class PeliculaDaoHibernate implements IPeliculaDAO { @Override public void crearEntidad(Pelicula entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Connection, Statement - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); sesion.persist(entidad); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void actualizarEntidad(Pelicula entidad) { Transaction transaccion = null; - - // try con recursos "cerrables": Session - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); if (!sesion.contains(entidad)) @@ -84,16 +91,24 @@ public class PeliculaDaoHibernate implements IPeliculaDAO { transaccion.commit(); } catch (Exception e) { - transaccion.rollback(); + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } } @Override public void borrarEntidadPorClave(Integer clave) { Transaction transaccion = null; - - try (Session sesion = GestorSesionesHibernate.getSession();) { + Session sesion = null; + + try { + sesion = GestorSesionesHibernate.getSession(); transaccion = sesion.beginTransaction(); // Borrado de Actor @@ -101,9 +116,15 @@ public class PeliculaDaoHibernate implements IPeliculaDAO { sesion.remove(actor); transaccion.commit(); - } catch (HibernateException e) { - transaccion.rollback(); + } catch (Exception e) { + if (transaccion != null && transaccion.isActive()) { + transaccion.rollback(); + } e.printStackTrace(); + } finally { + if (sesion != null) { + sesion.close(); + } } }