estoy aprendiendo APP y tienen una pregunta:¿Cuándo necesitamos más de un EntityManager?
¿En qué situaciones es necesario más de un EntityManager
en nuestra aplicación?
Las dos situaciones que yo sepa son los siguientes:
Cuando nuestra aplicación es una aplicación multi-hilo y más de un hilo necesidades de transacciones JPA porque
EntityManager
no es seguro para subprocesos y necesitamos unoEntityManager
por hilo.Cuando cualquier de la rosca necesita múltiples transacciones simultáneas, se necesita más de una
EntityManager
en ese hilo porque no hay relación de uno a uno entreEntityManager
yEntityTransaction
.
Q1. ¿Hay alguna otra situación en la que necesitemos más de un EntityManager
?
Q2. Hasta donde entiendo, solo debe haber un EntityManagerFactory
por unidad de persistencia. ¿Estoy en lo correcto? Si no, ¿cuáles son esas situaciones en las que necesitamos múltiples EntityManagerFactory
por unidad de persistencia?
Para Q1: Supongo que un objeto _Entity Manager_ debería tener una sobrecarga mínima, pero todavía estoy ansioso por preguntar cuánto sobrecarga :) Wow, que los subprocesos diff que dependen el uno del otro es más complejo. Entonces, ¿es seguro decir que deberías tener 1 EM por hilo? Luego, asegúrese de detectar cualquier excepción, ya que tiene múltiples hilos utilizando la misma tabla, ¿no? – thirdy
Sí, porque EM no es seguro para subprocesos, se puede usar en varios subprocesos si creo un envoltorio a su alrededor e incluyo métodos de guardar/actualizar "sincronizados" en el reiniciador que llama internamente a guardar/actualizar EM. Además, nunca borro/cierro el EM? Creo que todavía puede haber problemas para leer y escribir simultáneamente. ¿Podrías decirme tus comentarios sobre esto? – bluelurker