martes, 19 de enero de 2021

JPA - Anotaciones

 A nivel de CLASE

@Entity: indica que la clase es una entidad de BBDD.
@MappedSuperClass: indica que las clases que hereden de ésta (subclases), también heredarán las anotaciones de sus propiedades. Y que NO se creará una tabla en la BBDD para ésta clase.
@Inheritance(strategy = InheritanceType.JOINED): igual que la anterior, pero para esta clase sí se crea una tabla en la BBDD.
@Table(name = "table_name"): especifica el nombre de la tabla relacionada con la entidad.

A nivel de PROPIEDAD

@Id: indica que es la clave primaria de una entidad.
@GeneratedValue(strategy = GenerationType.IDENTITY): especifica la estrategia de generación de la clave primaria.
@Column(name = "column_name"): indica el nombre de la columna en base de datos.
@Lob: aplicado sobre una propiedad, indica que es un objeto grande (Large OBject). Por ejemplo, en el caso de String, si no se especifica @Lob, se le asigna un tamaño máximo de 255 caracteres.
@NotNull(message = "Name may not be null"): validación de restricción, indica que la propiedad no puede tener un valor nulo.
@NotEmpty(message = "Name may not be empty"): como el anterior, pero tampoco puede tener valor vacío.
@NotBlank(message = "Name may not be blank"): como el anterior, pero tampoco puede tener caracteres vacíos (valida el tamaño tras hacer un trim()).
@Size(min = 2, max = 32, message = "Name must be between 2 and 32 characters long"): validación de restricción, indica que la propiedad (String) debe tener entre 2 y 32 caracteres.
@Enumerated(value = EnumType.STRING): indica una propiedad de tipo enumeración alfanumérica.
@Enumerated(value = EnumType.ORDINAL): indica una propiedad de tipo enum (enumeración) numérica.
@Temporal(value = TemporalType.TIMESTAMP): indica una propiedad de tipo Date o Calendar (Fecha) completa con fecha y hora.
@Temporal(value = TemporalType.DATE): indica una propiedad de tipo Date o Calendar (Fecha) con fecha pero sin hora.
@Temporal(value = TemporalType.TIME): indica una propiedad de tipo Date o Calendar (Fecha) con hora pero sin fecha.

@ManyToOne: indica una relacion de muchos-a-uno de la clase actual con la clase del tipo de propiedad.
@OneToMany: indica una relacion de uno-a-muchos de la clase actual con la clase del tipo de propiedad.
@OneToOne: indica una relacion de uno-a-uno de la clase actual con la clase del tipo de propiedad.
@ManyToMany: indica una relacion de muchos-a-muchos de la clase actual con la clase del tipo de propiedad.
@JoinColumn(name = "column_name"): especifica el nombre de la columna de unión en la relación con la otra entidad.

A nivel de MÉTODO

@PrePersist: método que se ejecuta justo antes de guardar un nuevo objeto en la BBDD. Suele utilizarse para los atributos de creación de tipo fecha.
@PostPersist: método que se ejecuta justo después de guardar un nuevo objeto en la BBDD.
@PreRemove: método que se ejecuta justo antes de eliminar un objeto de la BBDD.
@PostRemove: método que se ejecuta justo después de eliminar un objeto de la BBDD.
@PreUpdate: método que se ejecuta justo antes de actualizar un objeto de la BBDD. Suele utilizarse para los atributos de modificación de tipo fecha.
@PostUpdate: método que se ejecuta justo después de actualizar un objeto de la BBDD.
@PostLoad: método que se ejecuta justo después de que se haya cargado un objeto a través de una consulta en BBDD.

No hay comentarios:

Publicar un comentario