我有一个EntityManagerFactory
可以创建一个(或多个)EntityManager
实例的实例。我正在使用 Servlet 环境,并且我有一个 EntityManagerFactory 连接到 servlet(通过 servlet 上下文),它在 servlet 的生命周期内共享(因此,对于所有用户)。
我可以执行以下操作之一:
- 为我的 servlet 的生命周期创建一个 EntityManager(例如在所有用户之间共享)
- 为每个用户创建一个(以便每个用户在 HttpSession 中获得自己的)
- 为每个 HTTP 请求创建一个(例如,通过实例化一个新请求并在
doGet
方法结束时将其关闭)
哪个最合适?创建 EntityManager 的成本高吗?如果我执行单个共享 EntityManager,是否有单个事务范围(即独立用户之间的更新可以提交其他更改)?