Seleccionar página

Como inyectar un EntityManager en Seam

por | Jun 4, 2008 | Seam

Solución a: Como inyectar un EntityManager en Seam.

Con la llegada de EJB 3 y JPA nace la figura del EntityManager para simplificar la persistencia de objetos.
Y gracias a las anotaciones, el EntityManager puede ser inyectado por el contenedor de EJBs.
Vamos a ver diferentes formas de obtener un EntityManager en Seam a través de anotaciones.

  • @PersistenceContext
    EntityManager entityManager;

    El EntityManager es inyectado directamente por el EJB container. El ciclo de vida del EntityManager inyectado de esta forma terminará cuando la transacción sea completada.
    Tras el cierre de la transacción, las entidades son desacopladas del contexto de persistencia, lo que puede dar lugar a una LazyLoadException.

  • @PersistenceContext(type=PersistenceContextType.EXTENDED)
    EntityManager entityManager;

    El EntityManager es inyectado directamente por el EJB container, y estará disponible aún después de que la transacción haya sido completa.
    Las entidades pueden seguir asociadas al contexto de persistencia durante varias interacciones.

  • @In
    EntityManager entityManager;

    De esta forma, el EntityManager es inyectado por Seam y asociado al contexto de conversación, con las mismas características que un EntityManager de tipo extendido.

  • @PersistenceUnit
    EntityManagerFactory;

    public void getNewEmInstance() {
    return emf.createEntityManager();
    }

    Esta anotación inyecta un EntityManagerFactory, que permite crear objetos EntityManager mediante el método EntityManagerFactory.createEntityManager();

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Blog de Neodoo Microsystems
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles. Puedes encontrar más información en nuestra Política de privacidad y Política de cookies.