В нескольких проекте я успешно использовалPersistenceUnit против PersistenceContext
@PersistenceUnit(unitName = "MiddlewareJPA")
EntityManagerFactory emf;
...
EntityManager entityManager = emf.createEntityManager();
получить EntityManager
для соединения с базой данных, но несколько дней назад я пытался переместить мой проект Jboss EAP 6.2
и он не мог создать EntityManager
. Я его и прибегая к помощи я обнаружил, что я должен попытаться изменить @PersistenceUnit
к
@PersistenceContext(unitName = "MiddlewareJPA")
private EntityManager entityManager;
получить EntityManager. Это сработало, но я не знаю почему. В чем разница между PersistenceUnit
и PersistenceContext
? Каковы плюсы и минусы каждого из них? Где мы должны использовать один из них?
Рассмотрите возможность использования спецификации CDI (новая в JEE 6) для выполнения ваших инъекций зависимостей, чтобы у вас был более «универсальный» способ сделать это вместо большой кучи аннотаций API/фреймворка. Это на самом деле не обеспечивает поддержку для инъекций менеджера объектов из коробки непосредственно в JEE 6, но есть документированные способы борьбы с этим. http://www.mastertheboss.com/cdi/cdi-and-jpa-tutorial – Gimby
В дополнение к доступным ответам: вот очень полезная статья, которая также может помочь ответить на вопросы OP: [JPA Concepts] (http: //tomee.apache.org/jpa-concepts.html) – informatik01