Поиск EntityManager на CMT - PullRequest
       23

Поиск EntityManager на CMT

0 голосов
/ 13 января 2012

Я долго сомневаюсь и никогда не нахожу ответа, поэтому я ценю любого короля помощи или объяснения ... возможно, это просто концептуальная ошибка ...

У меня есть средагде я использую CMT и Hibernate.Я могу внедрить EntityManager в качестве ресурса на мой EJB без каких-либо проблем.Но я не мог сделать это инъекцией напрямую в моих DAO, так как я инстанцировал это с традиционным фабричным шаблоном ....

Но мой вопрос: мне нужно использовать EntityManager, но я не хочупройти весь путь через мои слои!Должен быть другой путь, и я, вероятно, не вижу решения ...

Могу ли я сделать поиск короля контекста для этого EntityManager?Или любое другое, более элегантное решение?

Я сделал свое собственное решение, но это дерьмо лол ... не стоит спорить ...

Спасибо за любую помощь и прошу прощения за любую ошибку на английском, этоне мой родной язык.

1 Ответ

0 голосов
/ 14 января 2012

Даже после предложения JBNizet мне все еще было интересно узнать, как получить EntityManager, и я нашел этот ответ в том, как искать EntityManager в среде J2EE / EJB.

Во-первых, вам нужно поместить @PersistentContext в область видимости вашего EJB, чтобы установить def для последующего поиска и определить атрибут "name". Как:

@PersistenceContext(
name="myEntityManagerJNDIName",
unitName=InventoryManagement  // defined in a persistence.xml file
)
@Stateless
public class InventoryManagerBean implements InventoryManager { ... }

Затем вы можете найти свой EntityManager с кодом, подобным следующему:

...
// obtain the initial JNDI context
Context initCtx = new InitialContext();
// perform JNDI lookup to obtain container-managed entity manager
javax.persistence.EntityManager entityManager = (javax.persistence.EntityManager) 
   initCtx.lookup("java:comp/env/myEntityManagerJNDIName");
...

Я нашел способ получить EntityManager без инъекций.

...