Вопрос

Когда используешь EntityManager, лучше получить один экземпляр с PersistenceContext И передайте это в моей программе, или я должен использовать инъекцию зависимостей более одного раза?

В моем приложении каждый клиент будет общаться с статочным сеансом, и каждый боб должен использовать EntityManager в какой-то момент. Я предполагаю, что методы бобов выводятся одновременно (но я даже не уверен). Как я могу гарантировать, что я использую EntityManager в защитной манере? С транзакциями? С отдельным экземпляром в каждом фасоли?

Извините, если это сбивает с толку, я новичок в EJB/JPA, и я не смог найти никаких материалов, который отвечает на мои вопросы.

Это было полезно?

Решение

Да, вы должны вводить EntityManager экземпляры (которые будут разными для каждого запроса потока/клиента) в ваших бобах с сеансами состояния (которые не вызываются одновременно, по крайней мере, не от разных клиентов).

Однако нет смысла создавать классы DAO. JPA уже является API постоянства высокого уровня, который дает вам независимость и мобильность RDBMS между различными реализациями JPA. Таким образом, DAOS только добавит беспорядок в кодовую базу.

Для транзакций вам не нужно ничего делать. Бизнес-методы в сессионных бобах имеют «обязательный» атрибут транзакции по умолчанию, поэтому они всегда будут работать в транзакции для конкретной клиента.

Другие советы

Использовать @PersistenceContext Чтобы ввести свой EntityManager в вашем классе DAO (ES). Это классы, которые будут обрабатывать операции базы данных. Затем во всех других (сервисных) классах вводит ваш класс DAO (ES). Ваш DAO должен быть некоммерческим бобом (нет необходимости в удаленном интерфейсе, только локальный)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top