Una entidad es la representación de información que nosotros necesitamos en nuestra aplicación.
Esta entidad podría ser un usuario, un producto o cualquier dato que nuestra aplicación necesita mantener persistente para luego recuperarla cuando la necesite.
Que es una entidad para Spring Boot
Una entidad es un objeto, elemento o ‘cosa’ con atributos particulares que lo distinguen. Por ejemplo, este podría ser un ‘user (usuario)’ sobre el que necesitamos conocer sus atributos como el nombre, edad, email, etc.
Como definir una entidad en Spring Boot
Pensemos en una entidad simple. Por ejemplo, una entidad para guardar los usuarios de una aplicación.
Presta atención a estos puntos en este ejemplo de entidad:
- Defines la entidad con la anotación @Entity
- Es necesario una primary key (PK) (clave primaria) con @ID
- El valor de esta PK es generada automáticamente con esta anotación @GeneratedValue con el valor AUTO
Hay otras anotaciones que puedes utilizar.
- @Table para definir explícitamente el nombre de la tabla.
- @Column para definir el nombre de la columna.
En caso de no usar estas anotaciones (Table, Column), Spring decidirá por convención esos nombres.
Como usar una entidad en Spring Boot
Spring principalmente usa entidades para reconocer cuales clases representan el modelo de datos. Con esto, Spring puede realizar las acciones habituales sobre la base de datos para la entidad, como insertar, eliminar, buscar, etc.
Probablemente el uso de las entidades es con los repositorios. Por favor, revisa este articulo a fin de entender sobre los repositorios.
Relaciones Una a Muchas One en una entidad
Una entidad podría tener una más de una relación con otra entidad.
Supongamos que tenemos una entidad ‘User’ y la entidad ‘Task’ en nuestra aplicación.
un User puede utilizar ‘una o muchas (one or many)’ Task
¿Cómo definir una relación ‘one to many’ entre dos entidades?
En la primera entidad tú tienes que crear una ‘lista de Task’ y anotar esta con @OneToMany .
Usando mappedBy indicas que la relación es unidireccional. En otras palabras, un ‘User’ tiene muchas ‘Task’ pero una ‘Task’ no tiene muchos usuarios.
En la segunda entidad tu tienes que crear una referencia a ‘User’ y anotarla con @ManyToOne
@JoinColumn refiere a la columna con la que vamos a relacionar esta table con ‘User’.
En resumen:
- @OneToMany. Define una relación one-to-many (uno a muchos).
- mappedBy. Indica cuál entidad es dueña del uno a muchos de forma única.
- @ManyToOne. Usas esto para definir la relación many-to-one (muchos a uno).
- @JoinColumn. Para determinar la columna que usaremos como clave para lograr la relación con la entidad principal.
Conclusión
Has aprendido como crear entidades y como mapear dos entidades una con otra usando relaciones del tipo one-to-many and many-to-one.