2008-09-16 12 views
6

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).Mezcla de EJB 2.x beans de entidad BMP con Hibernate 3.x

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, Hibernate 3.x es la opció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 las dificultades (si las hay) de combinar estas dos estrategias de persistencia? ¿Se meterán en el camino del otro?

Respuesta

2

Como dice jodonnel, debe prestar atención al almacenamiento en caché, porque si utiliza 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 deben usar JTA proporcionado por el contenedor, por lo que para eso debería ser seguro.

+0

Lo mismo se aplica a la memoria caché de primer nivel (la sesión) –

+0

Si usa sesiones largas sí. Pero en realidad no se recomienda. –

+0

Basado en mi experimentación limitada hasta el momento, las dos tecnologías funcionan felizmente una al lado de la otra, junto con nuestra tercera tecnología de JDBC directo. El TransactionManager del servidor de la aplicación proporciona el comportamiento deseado incluso cuando los tres modos se usan dentro de la misma transacción. –

2

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

Francamente, yo recomendaría que si adopta Hibernate, suelte 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 utilice alternativamente EJB 3, que es Hibernate estandarizado en la API Java Persistence.

+0

En realidad vamos a programar contra JPA, con Hibernate como proveedor, pero como no podemos migrar al instante 100 beans de entidad BMP, la pregunta sobre cómo ejecutar las dos tecnologías en paralelo permanece. –

Cuestiones relacionadas