[RESOLVIDO] Hibernate: Before Insert, After Insert e cia

3 respostas
B

Boa tarde, este é meu primeiro post aqui no GUJ!

Tenho uma dúvida:
Há como utilizar before/after insert, update e delete igual faz com trigger em postgres e firebird, para pegar os valores anteriores e atuais?

Obrigado,
Bruno Faria

3 Respostas

M

Tem sim cara. Você irá criar na sua classe de domínio os métodos a serem chamados no before, after, etc. Você irá anotar estes métodos com:

@PostPersist, @PrePersist e etc.. É  procurar a anotação que você quer. Vai ficar assim:

   @PostPersist
   public void depoisSalvar() {
      // Faz o que você quer
   }
Lavieri

apenas acrescentando… além dos já citados, tem tb as anotações,
@PostUpdate, @PreUpdate
@PostRemove, @PreRemove
@PostLoad

o método com a notação não precisa ser public, pode ser private, protected, ou default a visibilidade… o método não deve ter parametros… e o método deve estar na classe Entidade, q vc ker q tome a ação…

Existe como criar uma classe Externa, para fazer auditoria, antes e apos estas operações… pra fazer isso… tem uma anotação (não lembro bem) acredito que é @EntityListerners(ClasseQueVaiAdutar.class)
essa anotção (@EntityLis…) é uma anotação de classe, então deve vim junto das anotações de @Entity e @Table, antes do escopo da classe

na classe “ClasseQueVaiAdutar” os métodos são um pouco difernetes… eles devem ter parametro, e no parametro vc vai receber a entidade que irá criar a trigger, portanto se tiver adutiando uma entidade Produto, o parametro deve receber um Produto, ou um SuperTipo de produto…

abraços

B

Valeu pessoal, era isso mesmo que procurava!

Moderador, pode marcar como resolvido.

Criado 19 de maio de 2009
Ultima resposta 22 de mai. de 2009
Respostas 3
Participantes 3