Skip to content

Java & Spring Data JPA

Posted on:July 21, 2023 at 05:17 AM
...

Table of contents

Open Table of contents

¿Que es Spring Data?

Spring data es una serie de proyectos soportados por spring para simplificar la capa de datos en las aplicaciones utilizando la especificación JPA (Java Persistence API).

Modulos principales

Estos son algunos de los principales modulos utilizados de spring data.


Spring Data JPA

Spring Data JPA simplifica el acceso y la manipulación de datos en aplicaciones Java, reduciendo la necesidad de escribir consultas SQL personalizadas y brindando una capa de abstracción para interactuar con la capa de persistencia de manera más sencilla y eficiente.

Para lograr el mapeo entre las clases java y las tablas en las bases de datos hacemos uso de ciertas anotaciones.

Ulgunas de ellas son:

Al utilizar estas anotaciones, podemos definir la estructura de nuestras tablas de base de datos y establecer relaciones entre las diferentes entidades de nuestra aplicación.

  1. @Entity: Esta anotación se coloca encima de una clase de Java para indicar que es una entidad JPA y debe ser mapeada a una tabla en la base de datos.

  2. @Table: Se utiliza para especificar el nombre de la tabla en la base de datos a la que se debe asociar la entidad. También se puede usar para definir el esquema y otros detalles relacionados con la tabla.

  3. @Id: Marca un atributo como clave primaria de la entidad. Esto se utiliza para identificar de forma única cada registro en la tabla.

  4. @GeneratedValue: Se utiliza para especificar cómo se generará el valor de la clave primaria automáticamente. Puede tener diferentes estrategias, como GenerationType.IDENTITY, GenerationType.SEQUENCE, GenerationType.AUTO, entre otras.

  5. @Column: Se usa para especificar detalles de mapeo para una columna específica en la tabla de base de datos. Esto incluye el nombre de la columna, la longitud, la precisión, etc.

  6. @OneToMany: Utilizado para establecer una relación uno a muchos entre dos entidades. Se usa para mapear una colección de objetos en una entidad a una colección de registros en otra entidad.

  7. @ManyToOne: Se utiliza para establecer una relación muchos a uno entre dos entidades. Se utiliza para mapear una clave foránea en una entidad a una relación con otra entidad.

  8. @ManyToMany: Usado para establecer una relación muchos a muchos entre dos entidades. Se utiliza para mapear una colección de objetos en una entidad a una colección de registros en otra entidad.


Caso de uso

Para poner en practica las anotaciones anteriores en el siguiente ejemplo se simulara un escenario en donde se tienen las entidades Propietario y Automovil.

Estas entidades estan relacionadas de la siguiente manera

Entidad Automovil

A starry night sky.

1.- En la clase anterior “Automovil”, se usa la anotacion @Entity justo arriba de la clase para declarar la clase como Entidad

2.- La notacion @Data es parte de la libreria Lombok lo que permite la generacion automatica de getters y setters

3.- Se necesita una llave primaria para establecer relaciones, esto se logra mediante el uso de la anotacion @Id, acompañado de @GeneratedValue para indicar la manera en que el Id sera generado

4.- Se agregan mas atributos

5.- Para crear una relacion muchos a uno se usa la anotacion @ManyToOne seguido de la anotacion @JoinColum que realiza el mapeo con el id de la entidad Propietario en el atributo propietario.

Entidad propietario

A starry night sky.

1.- Para la definir la entidad Propietario se utilizan las mismas anotaciones utilizadas anteriormente.

2.- Adicinalmente para establecer una relacion uno a muchos se usa la notacion @OneToMany

Diagrama Entidad-Relacion

Usando IntelliJ podemos visualizar las entidades y relaciones en el diagrama generado a partir de la declaracion de dichas entidades.

A starry night sky.