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;
如标题 - 为什么使用 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;