JPA:什么时候清除或关闭容器管理的实体管理器?

时间:2018-10-11 18:07:17

标签: java jpa ejb jta

应用程序管理的方案中,如果某个实体管理器将在一段时间内处于活动状态,则必须手动将其清除,否则实体会堆积起来并有可能吞噬大量内存。但是在容器管理的应用程序中,何时清除或关闭持久性上下文?我在这里看到一个说法,它总是在交易结束时被清除:

https://en.wikibooks.org/wiki/Java_Persistence/Persisting#Clear

“对于JTA管理的EntityManager,将在每个JTA事务边界上自动清除持久性上下文。”

...但是我找不到该声明的来源。

1 个答案:

答案 0 :(得分:1)

如果您想查看索赔的来源, JPA specification是您可以获得的最佳来源。声明如下:

  

JTA事务完成后(通过事务提交)   或回滚),容器通过调用来关闭实体管理器   EntityManager.close。

这是第357页的“容器责任”部分。