gpt4 book ai didi

java - 我应该多久创建一次 EntityManager?

转载 作者:IT老高 更新时间:2023-10-28 21:15:49 25 4
gpt4 key购买 nike

我有一个 EntityManagerFactory ,我可以为其创建一个(或多个)EntityManager 实例。我正在使用 Servlet 环境,并且我有一个 EntityManagerFactory 连接到 servlet(通过 servlet 上下文),它在 servlet 的生命周期内共享(因此,对于所有用户)。

我可以执行以下操作之一:

  • 为我的 servlet 的生命周期创建一个 EntityManager(例如,在所有用户之间共享)
  • 为每个用户创建一个(以便每个用户在 HttpSession 中获得自己的)
  • 为每个 HTTP 请求创建一个(例如,通过实例化一个新请求并在 doGet 方法结束时将其关闭)

哪个最合适?创建 EntityManager 的成本高吗?如果我执行单个共享 EntityManager,是否存在单个事务范围(即独立用户之间的更新可以提交其他更改)?

最佳答案

一个 EM 用于整个 servlet 听起来不太好。如果您不使用容器管理的 EM(例如 EJB3),那么建议将 EM 用于 particular unit of work。 .

在 Web 应用程序上下文中,您的第三个建议(每个 HTTP 请求一个)听起来不错。但是,这可能会导致您陷入将服务层与数据库层捆绑在一起的陷阱(您的服务层甚至不应该知道 EM 的存在)。

另一种方法是在您的 DAO 中以编程方式对事务进行标记,并让您的 DAO 为每个方法调用使用一个新的 EM。

编辑:与具有显着开销的 EMF 相比,EM 的创建成本低廉。使用一个 EMF(您似乎这样做)和大量 EM 是可行的方法。

关于java - 我应该多久创建一次 EntityManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com