与标题中一样 - 为什么使用CDI(上下文和依赖注入)注入EntityManager
(使用Producer和@Inject
注释)被称为良好实践?为什么它比使用@PersistenceContext
注释更好?我读到这是一个首选的实现,但我找不到原因。
答案 0 :(得分:4)
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;