Persistência com JPA2 e Hibernate - Inpi
Persistência com JPA2 e Hibernate - Inpi
Persistência com JPA2 e Hibernate - Inpi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ENTITY MANAGER 66CallbacksPodemos monitorar o ciclo de vida dos objetos das entidades da nossa aplicação. Determinadoseventos podem ser capturados e podemos associar métodos a esses eventos. Esses métodos sãochamados de callbacks. Um método de callback é executado automaticamente quando o eventoassociado a ele é disparado. Veja os eventos que podem ser monitorados na listagem abaixo:PrePersist: Disparado quando um objeto novo é persistido através da operação persist() ou merge()dos Entity Managers. Esse evento também é disparado para os objetos persistidos em cascata.PostPersist: Disparado durante a execução de uma sincronização, após a operação insert correspondenteao objeto que foi persistido. Um rollback na trasanção corrente pode desfazer aoperação insert, mas não o evento.PreRemove: Disparado quando um objeto gerenciado é removido através da operação remove()dos Entity Managers. Esse evento também é disparado para os objetos removidos em cascata.PostRemove: Disparado durante a execução de uma sincronização, após a operação delete correspondenteao objeto que foi removido. Um rollback na transação corrente pode desfazer aoperação delete, mas não o evento.PreUpdate: Disparado durante a execução de uma sincronização, antes da operação update correspondenteao objeto que foi alterado.PostUpdate: Disparado durante a execução de uma sincronização, após a operação update correspondenteao objeto que foi alterado. Um rollback na transanção corrente pode desfazer a operaçãoupdate, mas não o evento.PostLoad: Disparado depois que uma instância de uma entidade foi carregada <strong>com</strong> os dados dobanco de dados.Os métodos de callback associados aos eventos acima listados podem ser definidos nas classesdas entidades da nossa aplicação. Esses métodos devem ser anotados <strong>com</strong> @PrePersist, @PostPersist,@PreRemove, @PostRemove, @PreUpdate, @PostUpdate ou @PostLoad para associá-los aos eventoscorrespondentes. No exemplo abaixo, adicionamos um método de callback para cada evento definidopela especificação JPA.1 @Entity2 public class Produto {34 @Id @GeneratedValue5 private Long id;67 private String nome ;89 private Double preco ;101112 @PrePersist13 public void prePersist (){14 System . out . println (" Persistindo um novo objeto <strong>com</strong> persist () ou merge () ... ");15 }1617 @PostPersist66 www.k19.<strong>com</strong>.br