java hibernate java-ee ejb-2.x

java - Mezcla de beans de entidad EJB 2.x BMP con Hibernate 3.x



java-ee ejb-2.x (2)

Tengo una aplicación grande que usa beans de entidad EJB 2.x (BMP). Es bien sabido que es una estrategia de persistencia horrible (puedo elaborar si es necesario).

Me gustaría comenzar a migrar esta aplicación para utilizar una estrategia de persistencia mucho más expresiva, transparente y no invasiva, y dada la experiencia previa de mi empresa con ella, Hibernate 3.x es la elección obvia.

La migración a Hibernate llevará un tiempo, ya que más de 100 tablas en la aplicación usan entity beans. Así que estoy mirando un enfoque por fases donde las dos estrategias de persistencia se ejecutan en paralelo, idealmente en las mismas tablas al mismo tiempo, si es posible.

Mi pregunta es, ¿cuáles son los riesgos (si los hay) de combinar estas dos estrategias de persistencia? ¿Se meterán en el camino del otro?


Supongo que hay que tener cuidado con las sesiones de Hibernate. Hibernate almacena cosas en caché, y eso podría interferir.

Francamente, recomendaría que si adoptas Hibernate, sueltes los beans Entity por completo. Haga su trabajo de Hibernate dentro de beans de sesión y deje que los beans de sesión administren sus transacciones.

O alternativamente use EJB 3, que es Hibernate estandarizado en la API Java Persistence.


Como dijo jodonnel, debes prestar atención al almacenamiento en caché, ya que si usas el almacenamiento en caché de segundo nivel en Hibernate y la tabla se modifica fuera de Hibernate, entonces Hibernate no tiene forma de saber que su entrada de caché está obsoleta.

Para las transacciones, ambos deberían usar JTA provisto por el contenedor, por lo que debería ser seguro.