Trigger com Hibernate ... Gatilho no Hibernate [RESOLVIDO]  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

Como criar gatilhos no hibernate ?? a muito tempo atraz, navegando pelas classes do hibernate... vi que ele não salva diretamente os dados... que da um fire para os ouvintes e um dos ouvintes que salva os dados... é possivel então usar o recurso de triggers diretamente pelo hibernate ?? sem ter que escrevelas em um banco de dados ??

algo com c fosse Listners ??

This message was edited 1 time. Last update was at 18/02/2009 13:22:56


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
LuksS
JavaTeenager
[Avatar]

Membro desde: 08/01/2008 10:55:41
Mensagens: 172
Offline

Vc pode usar o conceito de EventListeners. Dá uma olhada no pacote org.hibernate.event

http://lucassimao.wordpress.com/
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

apenas para exemplificar um dos Cases é esse abaixo, onde eu preciso construir a lista de produtos para lojas, e uma tabela de estoque, sempre que eu adcionar 1 produto, ou adcionar 1 loja ... queria fazer isso sem as Trigger do banco de dados... mas sim direatmente com códigos java


This message was edited 1 time. Last update was at 17/02/2009 16:51:26


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

LuksS wrote:Vc pode usar o conceito de EventListeners. Dá uma olhada no pacote org.hibernate.event


1 duvida... onde eu injeto os Listners ?? na session ?? no sessionFactory ?? onde??

caso seja no Session, tenho que fazelo para cada sessão criada ?? ...

não achei os lugares para addOnDeleteListners... etc etc etc

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

procurei muito e so achei como fazer Interceptor... alguem sabe como fazer para adcionar um PreInsertEventListener por exemplo ??

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
LuksS
JavaTeenager
[Avatar]

Membro desde: 08/01/2008 10:55:41
Mensagens: 172
Offline

Mais ou menos assim:

http://lucassimao.wordpress.com/
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

LuksS wrote:Mais ou menos assim:
...


vlw ^^ ... mais me diz 1 coisa... tem como eu adcionar um Listner so em uma classe ?? tipo com anotações ?? vi algo assim
nesse link aki http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/listeners.html

poeram ele fala ali de Audit.class .... e não sei bem como ele vai chamar o LastUpdateListner ... o.O



Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Grinvon
GUJ Master
[Avatar]

Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline

Há os listeners do hibernate que usam as anotações:

@PrePersist
@PreUpdate

@PostLoad
@PostPersist

e aí vai.

Para fazer chamada a sua classe de listener, basta na sua classe de entidade chamar: @EntityListeners(MinhaClasseListener.class)

Onde MinhaClasseListener não precisa implementar nenhuma interface específica para se comportar como uma listener trigger de hibernate.

>> Inocêncio.
[MSN] [ICQ]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

Grinvon wrote:...

Para fazer chamada a sua classe de listener, basta na sua classe de entidade chamar: @EntityListeners(MinhaClasseListener.class)

Onde MinhaClasseListener não precisa implementar nenhuma interface específica para se comportar como uma listener trigger de hibernate.


como assim ?? e como ele vai chamar os métodos certos ??

como vou por exemplo implementar um Trigger de pré-insert por exemplo ?? ... teria como vc escrever um pequeno código de exemplo ?? ou me mostrar 1 ?

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Grinvon
GUJ Master
[Avatar]

Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline

Você viu as anotações??

Elas são que mostram o status da chamada que você desejar.

Exemplo, quero que toda operação de persistência, depois de persistir, ele envie um email

- Na minha entidade eu faço ela enxergar a classe listener

@EntityListeners(MinhaClasseListener.class)
public class MinhaEntidade { ... }

Dessa forma "MinhaClasseListener" se comportarar como um trigger.

Dentro dessa classe eu faço as chamadas necessárias:

@PostPersist @PostUpdate
public void persistir(MinhaEntidade pEntidade) {
//rotina enviar email
...
}

>> Inocêncio.
[MSN] [ICQ]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

Perfeito ^^ vlw... resolveu o problema ^^

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
jingle
Virtual Machine Man

Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline

Sei que tópico é de 2009 mas to precisando fazer exatamente isso e não estou conseguindo... não funciona mais os listeners?

tentei fazer exatamente como falaram:




mas nem se quer chamou o listner quando mandei dar save/update/remove.
[Email] [MSN]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team