Jak uzyskać dostęp do obiektu EntityManager - mendżera encji?

Remigisz Szulc
20.08.2015

EntityManager to mendżer encji (zarządza obiektami javy i mapuje je do rekordów w tabeli bazy danych) i w przypadku seama korzysta w swoim wnętrzu z mechanizmów Hibernate.

W Seam są trzy sposoby na uzyskanie dostępu do obiektu entityManager.

1. Przez adnotację @PersistenceContext:


@PersistenceContext
EntityManager entityManager
 

 

Ten sposób jest używany domyślnie przez seam-gena. Nie zalecamy go i proponujemy adnotować przez @In.

2. Przez adnotację @In:


@In
EntityManager entityManager
 

 

Ten sposób jest zalecany, ponieważ przy adnotacji @In to SEAM opiekuje się mendżerem encji, a nie EJB. Bezpośrednim skutkiem jest nagłe zmniejszenie (jak dobrze pójdzie, to do zera) znienawidzonych LazyInitializationException.

3. Przez pobranie instancji z obiektu Component:

 


EntityManager entityManager = (EntityManager) Component.getInstance("entityManager", true);
 

 

Ten sposób jest używany w metodach i klasach, które mają adnotację @BypassInterceptors, przy czym można tak pobrać dowolne inne obiekty, nie tylko mendżera encji.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie