EntityManager внедрить хорошую практику - PullRequest
0 голосов
/ 01 июня 2018

Как и в заголовке - почему использование CDI (внедрение контекстов и зависимостей) для внедрения EntityManager (с использованием аннотации Producer и @Inject) называется хорошей практикой?Почему это лучше, чем использовать @PersistenceContext аннотацию?Я прочитал, что это предпочтительная реализация, но я не могу найти, почему.

1 Ответ

0 голосов
/ 01 июня 2018

CDI - это стандартная технология для внедрения зависимостей в Java EE, которая делает удобным удобным для создания производителя метода для EntityManager, тогда вы можетепросто добавьте в свои bean-компоненты.

Аннотация @PersistenceContext содержит несколько настраиваемых элементов (например, name), и вы, возможно, не захотите дублировать ихнапример, во всем приложении.

Инъекция CDI особенно полезна, когда у вас есть несколько единиц персистентности.Тогда вы можете воспользоваться преимуществами CDI для инъекций:

public class Databases {

    @Produces @Users 
    @PersistenceContext(unitName="UserData")
    EntityManager userEntityManager;

    @Produces @Documents
    @PersistenceContext(unitName="DocumentData")
    EntityManager docDatabaseEntityManager;
}
@Inject @Users
EntityManager em;
@Inject @Documents
EntityManager em;
...