persistencia persistenceexception org hibernatepersistence for java jpa entitymanager

org - javax persistence persistenceexception no persistence provider for entitymanager named persistencia



¿Cuándo necesitamos más de un EntityManager? (1)

Estoy aprendiendo JPA y tengo una pregunta:

¿En qué situaciones necesitamos más de un EntityManager en nuestra aplicación?

Las dos situaciones que conozco son las siguientes:

  • Cuando nuestra aplicación es una aplicación de múltiples subprocesos y más de un subproceso necesita una transacción JPA porque EntityManager no es seguro para subprocesos y necesitamos un EntityManager por subproceso.

  • Cuando cualquiera de los hilos necesita múltiples transacciones simultáneas, necesitamos más de un EntityManager en ese hilo porque existe una relación de uno a uno entre EntityManager y EntityTransaction .

Q1. ¿Hay otras situaciones en las que necesitamos más de un EntityManager ?

Q2. A mi entender, solo debe haber un EntityManagerFactory por Unidad de Persitencia. ¿Estoy en lo correcto? Si no, ¿cuáles son esas situaciones en las que necesitamos múltiples EntityManagerFactory por unidad de persistencia?


P1: El EntityManager es mejor compararlo con la "buena vieja" Session hibernación: una unidad de trabajo (una simple acción comercial, por ejemplo, "iniciar sesión en un usuario", "realizar un pedido", etc.). No está necesariamente atado a un solo hilo. Solo se ejecutará en problemas si los diferentes subprocesos ejecutan tareas de base de datos que dependen entre sí dentro de una sola unidad de trabajo. Tendría que ejecutarlos en sincronización (preferiblemente, en orden en un solo hilo). Si, por ejemplo, tiene el requisito comercial de limpiar algunos "registros antiguos" cuando un usuario inicia sesión (lo que razonablemente no se molesta en la información del otro), puede ejecutarlo perfectamente en dos hilos separados dentro de una sola unidad de trabajo.

P2: Su comprensión es correcta. Sin embargo, puede crear más de uno, pero eso no tendría ningún sentido ni tendría ningún beneficio. Sólo añadiría una sobrecarga significativa.