2011-07-28 54 views
0

我正在使用ejb3和jsf開發Web應用程序。我想操縱jsf託管bean中的jpa實體。通常當我在我的託管bean中使用我的實體時,我得到LazyInitializationExceptions,因爲它們在進入Web容器時被分離。我如何將持久化上下文擴展到帶有Hibernate和JSF的Web模塊中

有沒有最佳實踐如何解決這個問題?

我知道我可以使用OpenSessionInView模式,所以我在JSF中打開了一個hibernate會話。這是否意味着我可以簡單地使用myEntitiy.setSomething(...)並將它保存到數據庫中?

問候, Laures

回答

0

我強烈建議你見縫,你可以找到它here

爲什麼我換接縫的最大原因之一就是這個。

1

當使用OpenSessionInView;調用「myEntitiy.setSomething(...)」只會改變該會話中的值。當您需要存儲以供將來使用時,您仍然必須堅持該對象。

我更喜歡創建一個「buisiness層」,其中事務開始並在該業務層中處理所有jpa操作。也就是說,每個業務方法都在其自己的事務中,併爲上面的gui層提供指定的服務。