EntityManager注入了良好的实践

时间:2018-06-01 13:31:09

标签: java jpa java-ee cdi

与标题中一样 - 为什么使用CDI(上下文和依赖注入)注入EntityManager(使用Producer和@Inject注释)被称为良好实践?为什么它比使用@PersistenceContext注释更好?我读到这是一个首选的实现,但我找不到原因。

1 个答案:

答案 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;