Alguém já usou o Hibernate Envers em produção?
Sabem se eu preciso rodar dentro do JBoss?
Hibernate Envers precisa rodar em JBoss?
6 Respostas
Eu já usei em uma aplicação rodando sobre o tomcat. Foi tranquilo. 
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.
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.
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.
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…
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>