我在WebSphere Application Server上使用OpenJPA。 我的WebApplication使用JSF 2(没有EJB)。
我想知道是否有最佳实践如何在JSF中使用JPA。
我发现EntityManagerFactory(EMF)应该是应用程序范围的。 当应用程序停止时,应该(仅)销毁EMF。
但我的消息来源不是最新的:
2007年Java Notepad: JPA EMF in web applications
自2010年起Best way to use JPA in web-tier
How to close a JPA EntityManger in web applications 从2007年开始
在JSF中是否有其他实践或更好的方法来处理JPA? 特别是EMF和DAO的范围。
最诚挚的问候,Veote
答案 0 :(得分:1)
创建一个简单的servlet filter,在init()
方法中创建EMF,在destroy()
方法中关闭它并在EntityManager
方法中创建一个doFilter()
作为ThreadLocal<EntityManager>
。您也可以在那里开始和结束交易。
这也称为“在视图中打开会话”或“在视图中打开实体管理器”模式。