Hibernate Envers precisa rodar em JBoss?

6 respostas
R

Alguém já usou o Hibernate Envers em produção?
Sabem se eu preciso rodar dentro do JBoss?

6 Respostas

T

Eu já usei em uma aplicação rodando sobre o tomcat. Foi tranquilo. :wink:

G

Há algum tempo o evers era um projeto da JBoss, e a partir da versão 3.5 o envers é um projeto embeded no Hibernate.

Assim como os outros projetos da JBoss como o EhCache, Infinispan, Javassist entre outros rodam em qualquer ambiente. Inclusive o Seam também, porém é necessário instalar umas libs dentro do container.

R

OK. Baixei o Hibernate 3.5 que já vem com ele embutido.

Coloquei essas propriedades dentro do hibernate.cfg.xml

<property name="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener</property> <property name="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener</property> <property name="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener</property> <property name="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</property> <property name="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</property> <property name="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener</property>

E coloquei o @Audited na minha entidade

Porém a tabela auxiliar não foi criada. O que mais preciso fazer?

P.S: Material sobre Envers não tem quase nada… Fiz conforme está na documentação.

G

Rafael, creio que a documentação seja bem curta porque é um projeto bem simples. Para mim ele criou uma tabela revinfo e mais as tabelas conforme as entidades anotadas com @ Audited. Nenhuma dessas foi criada?

No meu caso como meu projeto atual está em testes eu uso a propriedade do Hibernate que cria a base de dados automaticamente, porém não sei dizer se é necessário isso para o envers criar as tabelas.

R

garcia-jj:
Rafael, creio que a documentação seja bem curta porque é um projeto bem simples. Para mim ele criou uma tabela revinfo e mais as tabelas conforme as entidades anotadas com @ Audited. Nenhuma dessas foi criada?

No meu caso como meu projeto atual está em testes eu uso a propriedade do Hibernate que cria a base de dados automaticamente, porém não sei dizer se é necessário isso para o envers criar as tabelas.

Nenhuma foi criada. Também uso a propriedade para criar as tabelas. Achei estranho não ter criado.

As propriedades do arquivo de config estão corretas. As dependencias também… Não sei o que mais pode ter para eu verificar… deve ser algum detalhe…

R

Consegui!

O “problema” é que a documentação fala para modificar no persistence.xml ( acho que o arquivo de configuração para quem usa JPA ), e eu uso hibernate o hibernate.cfg.xml, nele tem algumas diferenças para configurar.

Achei nesse tópico do fórum do Hibernate, a solução:
https://forum.hibernate.org/viewtopic.php?f=1&t=998844&start=0

Configuração para hibernate.cfg.xml

<hibernate-configuration> <session-factory> ... <listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="post-update"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="post-delete"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-update"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-remove"/> <listener class="org.hibernate.envers.event.AuditEventListener" type="post-collection-recreate"/> ... </session-factory> </hibernate-configuration>

Criado 23 de abril de 2010
Ultima resposta 24 de abr. de 2010
Respostas 6
Participantes 3