Pregunta

Cuando se utiliza EntityManager, es mejor obtener una instancia con PersistenceContext y pasarlo alrededor en mi programa, o debería usar la inyección de dependencias más de una vez?

En mi solicitud cada cliente se comunicará con un bean de sesión con estado y las necesidades de cada frijol utilizar EntityManager en algún momento. Supongo que los métodos de frijol se invocated simultáneamente (pero ni siquiera estoy seguro). ¿Cómo te garantizo que yo uso EntityManager de una manera segura para los subprocesos? Con transacciones? Con una instancia independiente en cada grano?

Lo siento si esto es confuso, soy nuevo en EJB / APP y no pude encontrar ningún material que se ocupa de mis preguntas.

¿Fue útil?

Solución

Sí, debe inyectarse los casos EntityManager (que serán diferentes para cada subproceso de solicitud / cliente) en sus beans de sesión con estado (que no se invocan al mismo tiempo, al menos no desde diferentes clientes).

No hay ningún punto en la creación de clases DAO, sin embargo. APP es ya una API de persistencia de alto nivel que le da RDBMS independencia y portabilidad entre diferentes implementaciones de JPA. Así, DAOs sólo aumentaría el desorden a la base de código.

Para las transacciones, que realmente no necesita hacer nada. métodos comerciales en los beans de sesión tienen un "Requerido" atributo de transacción por defecto, por lo que siempre se ejecutarán dentro de una transacción de cliente específico.

Otros consejos

Uso @PersistenceContext para inyectar su EntityManager en su clase DAO (EN). Estas son las clases que se encargará de las operaciones de base de datos. Luego, en todos los demás (de servicio) clases inyectar su clase DAO (EN). Su DAO debe ser un bean sin estado (sin necesidad de una interfaz remota, sólo locales)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top