Dentro do contexto do java EE é possível realizar alguns eventos baseados no ciclo de vida de uma entidade, como isso conseguimos fazer ações no objeto antes que ele seja inserido, atualizado, removido ou carregado. Isso é possível através dos callback methods para entidades.
O JPA disponibiliza anotações para marcar em que momento(pre/post – antes/depois) o método será executado em relação a ações do entityManager no objeto.
Anotações:
- @PrePersist: executa método anotado antes da entidade ser persistida;
- @PostPersist: executa método anotado após entidade ser persistida;
- @PreRemove:executa método anotado antes da entidade ser removida;
- @PostRemove: executa método anotado após entidade ser removida;
- @PreUpdate: executa método anotado antes da entidade ser atualizada;
- @PostUpdate:executa método anotado após entidade ser persistida;
- @PostLoad: executa método anotado após entidade carregada(consultada);
Exemplo:
import javax.persistence.PrePersist; public class Produto { private LocalDate dataCadastro; @PrePersist public void preSave() { this.dataCadastro = LocalDate.now(); } ...
Quando executado entityManager.persist(produto), o método preSave será invocado antes do persist, porque está anotado com @PrePersist.
Observação
As anotações podem ser utilizadas em métodos de classes: @Entity, @Mappedsuperclass ou @EntityListerners.
As anotações podem ser utilizadas em métodos de classes: @Entity, @Mappedsuperclass ou @EntityListerners.