【问题标题】:CDI + JPA repositoryCDI + JPA 存储库
【发布时间】: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,存储库有一个请求范围来保持“每个请求一个会话”的规则。我认为这是一个很好的做法。

标签: java jpa cdi java-ee-7


【解决方案1】:

使用这种方法是否安全?我担心多个请求 到这个网络应用程序。

对我来说,这是一种完全有效的方法。所以我有点好奇为什么@JohnAment 说:

这取决于一点。什么容器和版本?。

AFAIK 无论容器如何,它都可以工作。如果我错了,有人可以纠正我吗?

【讨论】:

  • 我想只有容器对规范的实现错误才重要,但在这种情况下你可能会遇到更大的问题。
猜你喜欢
  • 1970-01-01
  • 2014-12-02
  • 2018-01-26
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多