Concepto
Concepto
- Una entidad es un objeto de persistencia.
- (Mapeo representacional) Normalmente...
- La clase entidad representa una tabla en el modelo relacional
- Una instancia de la clase entidad representa una fila de la tabla.
- Los atributos de la clase entidad representan los campos de la tabla
- (Requisitos de las clases entidades) Una clase de entidad debe...
- tener la anotación: @Entity (javax.persistence.Entity)
- ser public
- ser Serializable
- tener una clave primaria (@Id) y debe ser public (acceso directo o mediante getters y setters)
- tener un constructor público sin parámetros (puede tener más constructores)
- implementar los métodos
- toString()
- hashCode()
- equals(Object other)
Anotaciones
- @Entity, @Id
- @Table (name=“”). Nombre de la tabla
- @ GeneratedValue (strategy=?). Generación de claves
- GenerationType.AUTO. Por defecto, se elige una estrategia de forma automática
- GenerationType.IDENTITY. Se utiliza un contador autoincremental gestionado por la BD
- @Column. Propiedades de la anotación
- name. Nombre de la columna
- columnDefinition. Definición de la columna
- unique. Valor único
- nullable. Permitir nulos
- @Transient. No persistente
Relaciones
En JPA, existen cuatro tipo de relaciones entre las entidades.Las cuatro relaciones cubren las posibles relaciones que pueden existir entre las tablas de una base de datos relacional. Estas cuatro relaciones son expresadas a través de anotaciones.
- @OneToOne
- @OneToMany
- @ManyToOne
- @ManyToMany
Además, cada anotación acepta atributos que definen a profundidad el comportamiento de la relación. Los posibles atributos son:
- cascade. Tipo de operaciones en cascada a aplicar:
- CascadeType.ALL. Todas las operaciones
- CascadeType.PERSIST. Operaciones de persistencia
- CascadeType.MERGE. Operaciones de actualización
- CascadeType.REMOVE. Operaciones de borrado
- CascadeType.REFRESH. Operaciones de actualización
- fetch. Tipo de lectura en la BD
- FechType.LAZY. Los datos se recuperan de forma perezosa
- FechType.EAGER. Los datos se recuperan de forma temprana
- mappedBy. El campo que posee la relación.
- mappedBy=“variable”
- optional. Si la asociación es opcional
- @JoinColumn. Se establece como una clave foránea en otra entidad.
- name. Nombre de la columna