2014-10-06 43 views
2

我正在实现一个Vaadin Web应用程序,它可以连接数据库(使用jpa hibernate)。应用程序看起来像一个java swing,但在网络中。Vaadin的JPA实体管理器生命周期模式

我想知道如何处理JPA实体管理器生命周期的最佳实践。

book of vaadin显式告诉您使用EntityManager-per-Request。

但是,我有seen others提倡使用实体每会话,等等。

我的问题是:什么是最佳实践,每种选择的优点和缺点是什么?

回答

2

根据JPA最佳实践,EntityManager(EM)不应该被“重用”。为每个请求创建一个并不需要昂贵的成本。

如果每个会话使用一个EM,则需要注意在每个请求结束时是否从持久化上下文中删除每个实体。如果不从持久化上下文中移除实体,EM将占用大量内存。

如果Vaadin有一个自动处理每个会话一个EM的方法,请继续使用它。如果你需要实现它,我认为最好的方法是每个请求一个EM。