Mapeo de Tablas a Clases con JPA: Creación de Entities en Java
Clase 13 de 35 • Curso de Java Spring
Resumen
¿Cómo crear entidades en Java para mapear tablas de bases de datos?
En esta sección, te guiaré para crear entidades en Java utilizando JPA (Java Persistence API) y mapearlas a las tablas de tu base de datos. Este proceso es esencial para gestionar bases de datos en aplicaciones Java de manera eficiente.
¿Qué son los entities y cómo se crean?
Los entities o entidades son clases en Java que mapean una tabla de una base de datos mediante anotaciones de JPA. Aquí te indico cómo crear una entidad para una tabla llamada "productos":
-
Crear una Clase Java: Dentro del paquete
Per SystemsEntity
, inicia una nueva clase Java llamadaProducto
para mapear la tabla "productos". Utiliza nombres en singular para las clases. -
Añadir Anotaciones JPA:
- Usa
@Entity
para indicar que la clase representa una entidad. - Si el nombre de la tabla en la base de datos es diferente al de la clase, utiliza
@Table
con el atributoname
para definir el nombre real de la tabla.
@Entity @Table(name = "productos") public class Producto { // atributos y métodos }
- Usa
¿Cómo definir los atributos de una entidad?
Para mapear cada columna de la tabla, se definen atributos en la clase que corresponden a las columnas de la tabla:
-
Atributo para la Clave Primaria: Define un atributo para la clave primaria utilizando tipos de datos empaquetados en Java (p.ej.,
Integer
en lugar deint
). -
Anotaciones para la Clave Primaria:
- Usa
@Id
para designar el campo como clave primaria. - Usa
@GeneratedValue(strategy = GenerationType.IDENTITY)
si la clave primaria se genera automáticamente.
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer idProducto;
- Usa
-
Resto de Atributos:
- Crea atributos para cada columna, tipo
String
para texto yDouble
para valores numéricos decimal. - Si el nombre del atributo cambia (de formato CamelCase o si es diferente al de la columna), utiliza
@Column
con el atributoname
.
@Column(name = "nombre") private String nombre; @Column(name = "precio_venta") private Double precioVenta;
- Crea atributos para cada columna, tipo
¿Cómo se generan métodos getter y setter automáticamente?
Java te permite generar automáticamente los métodos getter y setter, lo que facilita la encapsulación y el acceso controlado a los atributos dentro de tus clases.
-
Accede al menú de generación de código, selecciona la opción para crear getters y setters, y elige todos los atributos de la clase.
public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; }
¿Cómo crear una entidad para la clase compra?
El proceso para crear una entidad para otra tabla, como "compras", sigue pasos similares con pequeñas variaciones según la estructura de la tabla:
-
Define la Clase y Añade Anotaciones:
- Usar
@Entity
y@Table
como se explicó anteriormente. - Proporcione el nombre correcto de la tabla.
- Usar
-
Atributos y Anotaciones:
- Crea atributos que reflejen las columnas y sus tipos de datos.
- Añade las anotaciones correspondientes si el atributo cambia el nombre.
@Entity @Table(name = "compras") public class Compra { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer idCompra; @Column(name = "id_cliente") private String idCliente; private LocalDateTime fecha; @Column(name = "medio_pago") private String medioPago; }
¿Cómo abordar entidades con claves primarias compuestas?
El manejo de claves primarias compuestas implica conocer cómo definir estas entidades, que será explorado en lecciones futuras. Te animo a que, como ejercicio, intentes crear las entidades para la tabla de "categoría" y "cliente". Recuerda, especialmente para "cliente", no es necesario generar automáticamente la clave primaria si es un dato preexistente y único como un número de cédula.
Al seguir estos pasos y entender las anotaciones, podrás construir un modelo de datos robusto y eficiente para tu aplicación Java, reforzando la conexión y manipulación de datos de manera efectiva. ¡Continúa explorando y aprendiendo para convertirte en un experto en desarrollo Java!