11.07.2015 Views

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!