Tag: cdi entitymanager

使用CDI在Java EE应用程序中获取对EntityManager的引用

我正在使用Java EE 7.我想知道将JPA EntityManager注入到应用程序范围的 CDI bean中的正确方法是什么。 您不能只使用@PersistanceContext注释注入它,因为EntityManager实例不是线程安全的。 假设我们希望在每个HTTP请求处理的beginnig创建EntityManager ,并在处理HTTP请求后关闭它们。 我想到了两个选择: 1.创建一个请求范围的CDI bean,它具有对EntityManager的引用,然后将bean注入到应用程序范围的CDI bean中。 import javax.enterprise.context.RequestScoped; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @RequestScoped public class RequestScopedBean { @PersistenceContext private EntityManager entityManager; public EntityManager getEntityManager() { return entityManager; } } import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; @ApplicationScoped public class ApplicationScopedBean { @Inject private RequestScopedBean requestScopedBean; public void persistEntity(Object entity) { requestScopedBean.getEntityManager().persist(entity); […]

在Java SE中使用CDI和JPA的最简单方法是什么?

我想在Java SE中使用 @Stateless public class CarDAO { @Inject private EntityManager em; public Car findById(Long id) { return em.find(Car.class, id); } } @Singleton public class Application { @Inject private CarDAO carDAO; public void run() { Car car = carDAO.findById(44); System.out.println(car); } } public class EntryPoint { public static void main(String[] args) { Application application = // […]