Pergunta

Eu tenho um aplicativo grande que usa beans de entidade EJB 2.x (BMP).Esta é conhecida por ser uma estratégia de persistência horrível (posso elaborar se necessário).

Gostaria de começar a migrar esta aplicação para usar uma estratégia de persistência muito mais expressiva, transparente e não invasiva e, dada a experiência anterior da minha empresa com ela, o Hibernate 3.x é a escolha óbvia.

A migração para o Hibernate vai demorar um pouco, pois mais de 100 tabelas na aplicação usam beans de entidade.Portanto, estou buscando uma abordagem em fases, onde as duas estratégias de persistência sejam executadas em paralelo, de preferência nas mesmas tabelas e ao mesmo tempo, se possível.

Minha pergunta é: quais são as armadilhas (se houver) de combinar essas duas estratégias de persistência?Eles vão atrapalhar um ao outro?

Foi útil?

Solução

Como disse Jodonnel, você deve prestar atenção ao cache, porque se você usar cache de segundo nível no Hibernate e uma tabela for modificada fora do Hibernate, então o Hibernate não terá como saber que sua entrada de cache está obsoleta.

Para as transações, ambos deverão utilizar o JTA fornecido pelo container, portanto para isso deverá ser seguro.

Outras dicas

Acho que é preciso realmente ter cuidado ao trabalhar com as sessões do Hibernate.O Hibernate armazena coisas em cache, e isso pode atrapalhar.

Francamente, eu recomendaria que, se você adotar o Hibernate, abandone totalmente os beans de entidade.Faça seu trabalho de Hibernate dentro dos beans de sessão e deixe que os beans de sessão gerenciem suas transações.

Ou, alternativamente, use o EJB 3, que é padronizado pelo Hibernate na API Java Persistence.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top