EntityManager 注入良好实践

EntityManager inject good practice

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

CDI is the standard technology for dependency injection in Java EE and it makes it convenient to create a method producer for the EntityManager 然后你可以简单地注入你的 beans。

@PersistenceContext annotation has a number of configurable elements (such as 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;