Skip to content

Aplicación Java de consola que usa Hibernate ORM para gestionar una base de datos MySQL. Implementa el patrón DAO, operaciones CRUD y consultas avanzadas. Ejemplo educativo de arquitectura N-Capas y acceso a datos en Java.

License

Notifications You must be signed in to change notification settings

RGiskard7/java-hibernate-orm-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-hibernate-orm-example

Java Hibernate MySQL License

Proyecto de aplicación de consola que demuestra el uso de Hibernate como framework de Mapeo Objeto-Relacional (ORM) para gestionar una base de datos MySQL.

Tabla de Contenidos


Objetivo del Proyecto

El propósito fundamental de este proyecto es ilustrar cómo una aplicación Java puede interactuar con una base de datos relacional (MySQL) a través de un modelo de objetos. Se utiliza Hibernate para abstraer la capa de persistencia, lo que aporta beneficios clave como:

  • Productividad: Se reduce el código repetitivo (boilerplate) de JDBC, SQL y la conversión manual de datos.
  • Mantenibilidad: El código es más limpio y fácil de entender al operar con objetos de negocio en lugar de con sentencias SQL.
  • Independencia de la Base de Datos: Gracias al dialecto de Hibernate, la aplicación puede cambiar de SGBD (Sistema Gestor de Base de Datos) con un esfuerzo mínimo.

El resultado es una aplicación de consola que sirve como ejemplo práctico de una arquitectura de N-Capas (Presentación, Lógica de Negocio, Acceso a Datos) y el uso de un ORM líder en la industria.

Arquitectura y Diseño

Patrón DAO (Data Access Object)

El proyecto implementa el patrón de diseño DAO, que separa la lógica de acceso a datos del resto de la aplicación. Cada entidad (Cliente, Coche, Venta) tiene su propio DAO (ClienteDAO, CochesDAO, VentaDAO), responsable de todas las operaciones de persistencia (CRUD) para esa entidad. Esto centraliza y organiza el código de interacción con la base de datos.

Esquema de la Base de Datos Relacional

La base de datos ventaCoches en MySQL contiene tres tablas principales: CLIENTE, COCHES y VENTA, con sus correspondientes relaciones de clave foránea.

Modelo de Objetos y Mapeo ORM

Hibernate mapea el esquema relacional a un modelo de objetos Java (POJOs). La correspondencia se define mediante ficheros de mapeo XML (.hbm.xml):

  • Cliente.java (Cliente.hbm.xml)
    public class Cliente {
        private int idCliente;
        private String dni;
        private String nombre;
        // ... otros campos
        private Set ventas = new HashSet(0); // Relación One-to-Many
    }
  • Coches.java (Coches.hbm.xml)
    public class Coches {
        private int idCoche;
        private String marca;
        private String modelo;
        // ... otros campos
        private Set ventas = new HashSet(0); // Relación One-to-Many
    }
  • Venta.java (Venta.hbm.xml)
    public class Venta {
        private int idVenta;
        private Date fechaCompra;
        private int precio;
        private Cliente cliente; // Relación Many-to-One
        private Coches coches;   // Relación Many-to-One
    }

Funcionalidades Implementadas

  • Gestión de Entidades: Operaciones CRUD completas para Vehículos, Clientes y Ventas.
  • Control de Integridad Referencial: El sistema previene la eliminación de clientes o vehículos si están asociados a ventas existentes.
  • Consultas Avanzadas:
    • HQL: Búsqueda de clientes por ciudad y vehículos por número de plazas.
    • SQL Nativo: Informe de ventas en un rango de fechas, uniendo las tres tablas.
  • Ejecución de Consultas Dinámicas: Una funcionalidad segura para ejecutar sentencias SELECT genéricas.

Tecnologías y Librerías

Tecnología Versión / Tipo
Lenguaje Java 8+
Framework ORM Hibernate 5.6.5.Final
Base de Datos MySQL
Driver mysql-connector-j
Logging slf4j

Instalación y Puesta en Marcha

1. Prerrequisitos

  • JDK (versión 8 o superior).
  • Servidor de base de datos MySQL.
  • Eclipse IDE for Java Developers.

2. Base de Datos

  1. Crea una base de datos en MySQL llamada ventaCoches.
  2. Ejecuta un script SQL (no incluido) para crear las tablas CLIENTE, COCHES y VENTA.

3. Configuración de Hibernate

  1. Abre el fichero src/hibernate.cfg.xml.
  2. Ajusta las propiedades de conexión a tu base de datos:
    <property name="hibernate.connection.url">jdbc:mysql://localhost/ventaCoches</property>
    <property name="hibernate.connection.username">tu_usuario</property>
    <property name="hibernate.connection.password">tu_contraseña</property>

4. Ejecución en Eclipse

  1. Importa el proyecto en Eclipse (File > Import > General > Existing Projects into Workspace).
  2. Añade las librerías del directorio lib/ al Build Path del proyecto.
  3. Ejecuta el método main de la clase com.example.practica3ad.Sistema.

Nota sobre la configuración del entorno: Si necesitas ayuda para configurar Hibernate y sus herramientas en Eclipse, puedes seguir esta guía detallada de instalación y configuración manual.

Créditos

  • Autor: Eduardo Díaz Sánchez
  • Asignatura: Acceso a Datos, DAM
  • Centro Educativo: IES Calderón de la Barca (Pinto)

Licencia

Este proyecto se distribuye bajo la licencia MIT.

About

Aplicación Java de consola que usa Hibernate ORM para gestionar una base de datos MySQL. Implementa el patrón DAO, operaciones CRUD y consultas avanzadas. Ejemplo educativo de arquitectura N-Capas y acceso a datos en Java.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages