【发布时间】:2015-10-04 23:58:45
【问题描述】:
我正在尝试一种简单的方法将我的 EntityManager 注入到存储库中。会有副作用吗?
托管 Bean:
@Named
@SessionScoped
public class Teste implements Serializable {
@Inject
Repository repo;
}
存储库
@RequestScoped
public class Repository {
@PersistenceContext(unitName="Test")
EntityManager em;
}
使用这种方法是否安全?我担心对这个网络应用有多个请求。
【问题讨论】:
-
取决于一点。什么容器和版本?
-
@PersistenceContext注入本身是有道理的。您将请求范围的存储库注入具有更长寿命的会话范围的 Teste 类的具体问题是什么?我认为这没问题,因为 CDI 将注入一个请求范围的代理,即使 Teste 是会话范围的,它也会在每个请求上为您提供一个新的存储库。 -
@JohnAment,我使用的是 Wildfly 8.2,Java 8。
-
@wrschneider,存储库有一个请求范围来保持“每个请求一个会话”的规则。我认为这是一个很好的做法。