27 stycznia 2008

Dostęp do EntityManager w metodach zwrotnych encji w JPA

Kolejny wątek na grupie pl.comp.lang.java sprowokował mnie do szczegółowej analizy działania Java Persistence API (JPA) ze specyfikacją w ręku.

Tym razem Krzysiek (aka Kolszew) zapytał o mechanizm wstrzeliwania zależności w encjach JPA, które są częścią szerszej specyfikacji Enterprise JavaBeans 3.0 (EJB3) - EJB3, JPA, @EJB. Po krótkiej wymianie wiadomości okazało się, że tematem przewodnim wątku jest możliwość wykorzystania javax.persistence.EntityManager w metodzie zwrotnej encji (oznaczonej przez adnotację @PostRemove). Mechanizm wstrzeliwania zależności odpada w tym scenariuszu, gdyż EJB3 nie udostępnia go dla encji JPA. Jak się okazało adnotacje nie są dostępne, ale podstawy, na których są oparte, jak najbardziej, tj. lokalne drzewo JNDI w kontekście wywołania encji. Wynik jest bardzo zaskakujący. Generalnie warto czytać specyfikacje i próbować ich realizację w środowisku, z którym pracujemy.

Więcej znajdziesz w kolejnym artykule w serii o EJB3 - Dostęp do EntityManager w metodach zwrotnych encji w JPA.

p.s. Nie żebym się narzucał, ale o SMSach pamiętacie, nieprawdaż? Więcej na stronie konkursu Blog Roku 2007.