cambios para el uso de getCurrentSession()

This commit is contained in:
Isidoro Nevares Martín 2026-01-10 12:11:29 +01:00
parent 3898df1d77
commit a71c8bd259
6 changed files with 37 additions and 31 deletions

View File

@ -165,21 +165,21 @@ public class ActorDaoHibernate implements IActorDAO {
@Override
public Actor obtenerActorPorNombre(String nombre) {
Actor actor = null;
String sentenciaHQL = "SELECT a FROM Actor a WHERE a.nombre = :nombre";
try (Session sesion = GestorSesionesHibernate.getSession();) {
SelectionQuery<Actor> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Actor.class);
sentenciaConsulta.setParameter("nombre", nombre);
actor = sentenciaConsulta.getSingleResultOrNull();
} catch (Exception e) {
e.printStackTrace();
}
Session sesion = GestorSesionesHibernate.getCurrentSession();
SelectionQuery<Actor> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Actor.class);
sentenciaConsulta.setParameter("nombre", nombre);
actor = sentenciaConsulta.getSingleResultOrNull();
return actor;
}
@Override
public void actualizarActor(Actor actor) throws Exception {
Session sesion = GestorSesionesHibernate.getCurrentSession();
sesion.merge(actor);
if (!sesion.contains(actor))
sesion.merge(actor);
}
@Override

View File

@ -165,20 +165,21 @@ public class DirectorDaoHibernate implements IDirectorDAO {
public Director obtenerDirectorPorNombre(String nombre) {
Director director = null;
String sentenciaHQL = "SELECT d FROM Director d WHERE d.nombre = :nombre";
try (Session sesion = GestorSesionesHibernate.getSession();) {
SelectionQuery<Director> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Director.class);
sentenciaConsulta.setParameter("nombre", nombre);
director = sentenciaConsulta.getSingleResultOrNull();
} catch (Exception e) {
e.printStackTrace();
}
Session sesion = GestorSesionesHibernate.getCurrentSession();
SelectionQuery<Director> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Director.class);
sentenciaConsulta.setParameter("nombre", nombre);
director = sentenciaConsulta.getSingleResultOrNull();
return director;
}
@Override
public void actualizarDirector(Director director) throws Exception {
Session sesion = GestorSesionesHibernate.getCurrentSession();
sesion.merge(director);
if (!sesion.contains(director))
sesion.merge(director);
}
@Override

View File

@ -188,21 +188,21 @@ public class PeliculaDaoHibernate implements IPeliculaDAO {
@Override
public Pelicula obtenerPeliculaPorTitulo(String titulo) {
Pelicula pelicula = null;
String sentenciaHQL = "SELECT p FROM Pelicula p WHERE p.titulo = :titulo";
try (Session sesion = GestorSesionesHibernate.getSession();) {
SelectionQuery<Pelicula> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Pelicula.class);
sentenciaConsulta.setParameter("titulo", titulo);
pelicula = sentenciaConsulta.getSingleResultOrNull();
} catch (Exception e) {
e.printStackTrace();
}
Session sesion = GestorSesionesHibernate.getCurrentSession();
SelectionQuery<Pelicula> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Pelicula.class);
sentenciaConsulta.setParameter("titulo", titulo);
pelicula = sentenciaConsulta.getSingleResultOrNull();
return pelicula;
}
@Override
public void actualizarPelicula(Pelicula pelicula) throws Exception {
Session sesion = GestorSesionesHibernate.getCurrentSession();
sesion.merge(pelicula);
if (!sesion.contains(pelicula))
sesion.merge(pelicula);
}
@Override

View File

@ -191,7 +191,8 @@ public class RepartoDaoHibernate implements IRepartoDAO {
@Override
public void actualizarReparto(Reparto reparto) throws Exception {
Session sesion = GestorSesionesHibernate.getCurrentSession();
sesion.merge(reparto);
if (!sesion.contains(reparto))
sesion.merge(reparto);
}
}

View File

@ -56,7 +56,7 @@ public class ProcesadorPeliculasJSON {
Transaction transaccion = null;
// Usamos getCurrentSession para que todos los DAO usen la misma sesión y
// transacción
try (Session sesion = GestorSesionesHibernate.getSession()) {
try (Session sesion = GestorSesionesHibernate.getCurrentSession()) {
// Iniciar transacción
transaccion = sesion.beginTransaction();
@ -76,20 +76,24 @@ public class ProcesadorPeliculasJSON {
String idioma = nodoPelicula.get("idioma").asString();
boolean color = nodoPelicula.get("color").asBoolean();
int anyo = nodoPelicula.get("anyo").asInt();
// Si la película no existe se crea nueva, si no se actualiza
if (pelicula == null) {
pelicula = new Pelicula();
pelicula.setTitulo(titulo);
pelicula.setAnyo(anyo);
pelicula.setPaisLocalizacion(paisLocalizacion);
pelicula.setDirector(director);
pelicula.setIdioma(idioma);
pelicula.setColor(color);
pelicula.setObservacion(observacionJSON);
pelicula.setObservacion(observacionJSON.substring(0, 50)); // Limitar a 50 caracteres (de la BBDD)
peliculaDAO.insertarPelicula(pelicula);
} else {
pelicula.setTitulo(titulo);
pelicula.setAnyo(anyo);
pelicula.setPaisLocalizacion(paisLocalizacion);
pelicula.setDirector(director);
pelicula.setIdioma(idioma);
@ -112,7 +116,7 @@ public class ProcesadorPeliculasJSON {
// Confirmar transacción
transaccion.commit();
System.out.println("Procesada con éxito la película: " + titulo);
System.out.println("Se ha procesado con éxito la película: " + titulo);
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();

View File

@ -17,7 +17,7 @@
<property name="show_sql">false</property>
<property name="format_sql">flase</property>
<!-- Propuedad para gestionar el contexto de la sesión actual de Hibernate -->
<!-- Propiedad para gestionar el contexto de la sesión actual de Hibernate -->
<property name="hibernate.current_session_context_class">thread</property>
<mapping class="org.lapaloma.aadd.cine.vo.Continente"></mapping>