dao de Gasto y Patrocinador

This commit is contained in:
Isidoro Nevares Martín 2026-01-20 17:07:05 +01:00
parent 1a0f8809a4
commit 6f0b89e8a3
14 changed files with 205 additions and 12 deletions

View File

@ -19,8 +19,18 @@ public class AppProyectosIES {
public static void main(String[] args) { public static void main(String[] args) {
AppProyectosIES app = new AppProyectosIES(); AppProyectosIES app = new AppProyectosIES();
/*
delete from t_gasto ;
delete from t_ingreso;
delete from t_curso_proyecto;
delete from t_concepto ;
delete from t_patrocinador;
delete from t_proyecto ;
delete from t_proyecto
*/
// Generar la estructura de la base de datos en PostgreSQL // Generar la estructura de la base de datos en PostgreSQL
// GestorSesionesHibernate.getSession(); GestorSesionesHibernate.getSession();
try { try {
app.procesarFicheros(); app.procesarFicheros();

View File

@ -5,7 +5,7 @@ import es.palomafp.aadd.inm.vo.Concepto;
/** /**
* *
* IProyectoDAO: Clase que realiza .... * IConceptoDAO: Interfaz que representa las operaciones a realizar con la entidad Concepto
* @author Isidoro Nevares Martín - IES Virgen de la Paloma * @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 ene 2026 * @date 20 ene 2026
* *

View File

@ -5,7 +5,7 @@ import es.palomafp.aadd.inm.vo.CursoProyecto;
/** /**
* *
* IProyectoDAO: Clase que realiza .... * ICursoProyectoDAO: Interfaz que representa las operaciones a realizar con la entidad CursoProyecto
* @author Isidoro Nevares Martín - IES Virgen de la Paloma * @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 ene 2026 * @date 20 ene 2026
* *

View File

@ -0,0 +1,18 @@
package es.palomafp.aadd.inm.dao;
import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.vo.Gasto;
/**
*
* IGastoDAO: Interfaz que representa las operaciones a realizar con la entidad Gasto
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 ene 2026
*
*
*/
public interface IGastoDAO extends IOperacionesDAOEntidad<Gasto, Integer> {
Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException;
}

View File

@ -4,7 +4,7 @@ import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
/** /**
* *
* IOperacionesBasicas: Clase que realiza .... * IOperacionesBasicas: Interfaz que representa las operaciones comunes a todas las entidades de persistencia.
* @author Isidoro Nevares Martín - IES Virgen de la Paloma * @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 14 dic 2025 * @date 14 dic 2025
* *

View File

@ -0,0 +1,18 @@
package es.palomafp.aadd.inm.dao;
import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.vo.Patrocinador;
/**
*
* IPatrocinadorDAO: Interfaz que representa las operaciones a realizar con la entidad Patrocinador
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 ene 2026
*
*
*/
public interface IPatrocinadorDAO extends IOperacionesDAOEntidad<Patrocinador, Integer> {
Patrocinador obtenerPatrocinadorPorNombre(String nombrePatrocinador) throws ProyectosIESException;
}

View File

@ -5,7 +5,7 @@ import es.palomafp.aadd.inm.vo.Proyecto;
/** /**
* *
* IProyectoDAO: Clase que realiza .... * IProyectoDAO: Interfaz que representa las operaciones a realizar con la entidad Proyecto
* @author Isidoro Nevares Martín - IES Virgen de la Paloma * @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 20 ene 2026 * @date 20 ene 2026
* *

View File

@ -0,0 +1,69 @@
package es.palomafp.aadd.inm.dao.hbm;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.SelectionQuery;
import es.palomafp.aadd.inm.dao.IGastoDAO;
import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.gestor.GestorSesionesHibernate;
import es.palomafp.aadd.inm.vo.Gasto;
/**
*
* ConceptoDaoHibernate: Clase que implementa el interfaz IOperacionesDAOEntidad
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 31 oct 2025
*/
public class GastoDaoHibernate implements IGastoDAO {
@Override
public void crearEntidad(Gasto entidad) throws ProyectosIESException {
Transaction transaccion = null;
Session sesion = null;
try {
sesion = GestorSesionesHibernate.getSession();
transaccion = sesion.beginTransaction();
sesion.persist(entidad);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
} finally {
if (sesion != null) {
sesion.close();
}
}
}
@Override
public Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException {
Gasto gasto = null;
String sentenciaHQL = "SELECT g FROM Gasto g WHERE g.nombre = :nombre";
// try con recursos "cerrables": Session
try (Session sesion = GestorSesionesHibernate.getSession();) {
SelectionQuery<Gasto> sentenciaConsulta = sesion.createSelectionQuery(sentenciaHQL, Gasto.class);
sentenciaConsulta.setParameter("nombre", nombreGasto);
gasto = sentenciaConsulta.getSingleResultOrNull();
} catch (Exception e) {
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
}
return gasto;
}
@Override
public Gasto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -0,0 +1,73 @@
package es.palomafp.aadd.inm.dao.jpa;
import es.palomafp.aadd.inm.dao.IGastoDAO;
import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.gestor.GestorEntityManagerJPA;
import es.palomafp.aadd.inm.vo.Gasto;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.TypedQuery;
/**
*
* ConceptoDaoJPA: Clase que implementa el interfaz IGastoDAO
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 31 oct 2025
*/
public class GastoDaoJPA implements IGastoDAO {
@Override
public void crearEntidad(Gasto entidad) throws ProyectosIESException{
EntityManager gestorEntidades= null;
EntityTransaction transaccion = null;
try {
gestorEntidades = GestorEntityManagerJPA.getEntityManager();
transaccion = gestorEntidades.getTransaction();
transaccion .begin();
gestorEntidades.persist(entidad);
transaccion.commit();
} catch (Exception e) {
if (transaccion != null && transaccion.isActive()) {
transaccion.rollback();
}
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_INSERCION);
} finally {
if (gestorEntidades != null) {
gestorEntidades.close();
}
}
}
@Override
public Gasto obtenerGastoPorNombre(String nombreGasto) throws ProyectosIESException {
Gasto gasto = null;
String sentenciaJPQL = """
SELECT g FROM Gasto g
WHERE g.nombre= :nombre
""";
// try con recursos "cerrables": Session
try (EntityManager entityManager = GestorEntityManagerJPA.getEntityManager();) {
TypedQuery<Gasto> query = entityManager.createQuery(sentenciaJPQL, Gasto.class);
query.setParameter("nombre", nombreGasto);
gasto = query.getSingleResult();
} catch (Exception e) {
throw new ProyectosIESException(e, this.getClass(), ProyectosIESException.ERROR_CONSULTA);
}
return gasto;
}
@Override
public Gasto obtenerEntidadPorID(Integer clave) throws ProyectosIESException {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -10,7 +10,7 @@ import jakarta.persistence.TypedQuery;
/** /**
* *
* ConceptoDaoJPA: Clase que implementa el interfaz IOperacionesDAOEntidad * ProyectoDaoJPA: Clase que implementa el interfaz IProyectoDAO
* *
* @author Isidoro Nevares Martín - IES Virgen de la Paloma * @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 31 oct 2025 * @date 31 oct 2025
@ -68,4 +68,5 @@ public class ProyectoDaoJPA implements IProyectoDAO {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
} }

View File

@ -5,12 +5,14 @@ import java.time.LocalDate;
import es.palomafp.aadd.inm.dao.IConceptoDAO; import es.palomafp.aadd.inm.dao.IConceptoDAO;
import es.palomafp.aadd.inm.dao.ICursoProyectoDAO; import es.palomafp.aadd.inm.dao.ICursoProyectoDAO;
import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad; import es.palomafp.aadd.inm.dao.IGastoDAO;
import es.palomafp.aadd.inm.dao.IProyectoDAO; import es.palomafp.aadd.inm.dao.IProyectoDAO;
import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate; import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate;
import es.palomafp.aadd.inm.dao.hbm.CursoProyectoDaoHibernate; import es.palomafp.aadd.inm.dao.hbm.CursoProyectoDaoHibernate;
import es.palomafp.aadd.inm.dao.hbm.GastoDaoHibernate;
import es.palomafp.aadd.inm.dao.hbm.ProyectoDaoHibernate; import es.palomafp.aadd.inm.dao.hbm.ProyectoDaoHibernate;
import es.palomafp.aadd.inm.dao.jpa.CursoProyectoDaoJPA; import es.palomafp.aadd.inm.dao.jpa.CursoProyectoDaoJPA;
import es.palomafp.aadd.inm.dao.jpa.GastoDaoJPA;
import es.palomafp.aadd.inm.excepcion.ProyectosIESException; import es.palomafp.aadd.inm.excepcion.ProyectosIESException;
import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion; import es.palomafp.aadd.inm.gestor.GestorFicheroConfiguracion;
import es.palomafp.aadd.inm.vo.Concepto; import es.palomafp.aadd.inm.vo.Concepto;
@ -71,13 +73,14 @@ public class ProcesadorFicheroJSON {
gasto.setNumeroUnidades(unidades); gasto.setNumeroUnidades(unidades);
gasto.setPrecioUnidad(precioUnitario); gasto.setPrecioUnidad(precioUnitario);
// Obtener el concepto para asociárselo al gasto
IConceptoDAO conceptoDAO = new ConceptoDaoHibernate(); IConceptoDAO conceptoDAO = new ConceptoDaoHibernate();
Concepto concepto=conceptoDAO.obtenerConceptoPorNombre(nombreConcepto) Concepto concepto=conceptoDAO.obtenerConceptoPorNombre(nombreConcepto);
gasto.setConcepto(concepto); gasto.setConcepto(concepto);
// Inserción en PostgreSQL con Hibernate // Inserción en PostgreSQL con Hibernate
IOperacionesDAOEntidad<Gasto, Integer> operacionesDAOGasto = new GastoDaoHibernate(); IGastoDAO operacionesDAOGasto = new GastoDaoHibernate();
operacionesDAOGasto.crearEntidad(gasto); operacionesDAOGasto.crearEntidad(gasto);
// Inserción en ObjectDB con JPA // Inserción en ObjectDB con JPA
operacionesDAOGasto = new GastoDaoJPA(); operacionesDAOGasto = new GastoDaoJPA();

View File

@ -4,6 +4,7 @@ import java.io.File;
import java.time.LocalDate; import java.time.LocalDate;
import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad; import es.palomafp.aadd.inm.dao.IOperacionesDAOEntidad;
import es.palomafp.aadd.inm.dao.IProyectoDAO;
import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate; import es.palomafp.aadd.inm.dao.hbm.ConceptoDaoHibernate;
import es.palomafp.aadd.inm.dao.hbm.CursoAcademicoDaoHibernate; import es.palomafp.aadd.inm.dao.hbm.CursoAcademicoDaoHibernate;
import es.palomafp.aadd.inm.dao.hbm.PatrocinadorDaoHibernate; import es.palomafp.aadd.inm.dao.hbm.PatrocinadorDaoHibernate;
@ -92,7 +93,7 @@ public class ProcesadorFicheroXML {
proyecto.setUrlLogo(urlImagenLogo); proyecto.setUrlLogo(urlImagenLogo);
// Inserción en PostgreSQL con Hibernate // Inserción en PostgreSQL con Hibernate
IOperacionesDAOEntidad<Proyecto, Integer> operacionesDAOProyecto = new ProyectoDaoHibernate(); IProyectoDAO operacionesDAOProyecto = new ProyectoDaoHibernate();
operacionesDAOProyecto.crearEntidad(proyecto); operacionesDAOProyecto.crearEntidad(proyecto);
// Inserción en ObjectDB con JPA // Inserción en ObjectDB con JPA
operacionesDAOProyecto = new ProyectoDaoJPA(); operacionesDAOProyecto = new ProyectoDaoJPA();

View File

@ -21,7 +21,7 @@
<!-- Configuración de propiedades del SGDB (ObjectDB)--> <!-- Configuración de propiedades del SGDB (ObjectDB)-->
<properties> <properties>
<property name="jakarta.persistence.jdbc.url" value="objectdb://localhost/proyectos_ies.odb" /> <property name="jakarta.persistence.jdbc.url" value="objectdb://10.19.0.253:6136/proyectos_ies.odb" />
<property name="jakarta.persistence.jdbc.user" value="admin"/> <property name="jakarta.persistence.jdbc.user" value="admin"/>
<property name="jakarta.persistence.jdbc.password" value="admin"/> <property name="jakarta.persistence.jdbc.password" value="admin"/>
</properties> </properties>

View File

@ -4,7 +4,7 @@
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration> <hibernate-configuration>
<session-factory> <session-factory>
<property name="connection.url">jdbc:postgresql://192.168.1.36:5432/proyectos_ies</property> <property name="connection.url">jdbc:postgresql://10.19.0.221:5432/proyectos_ies</property>
<property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.driver_class">org.postgresql.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>