2013-05-15 29 views
3

我正在從事的一個項目將從jee5/seam升級到jee6,其中「那些虔誠的人」認爲由於其大部分特徵已被合併而放棄接縫是一個好主意進入jee6。但我有一個案例,我似乎無法在jee6中解決。在談話中用jee6代替接縫

我們有幾個使用ConversationScope的嚮導。我們使用Seams FlushModeType.Manual來避免提交「髒」數據,直到我們希望我們確實要提交它(每個頁面加載基本上都獲得它自己的事務,但是因爲在我們刷新之前沒有任何內容寫入數據庫,大多數提交不會執行不會改變數據庫的狀態)。

我在jee6中使用了PersistenceContextType.EXTENDED進行了一些嘗試,但似乎我無法找到一種方式將flush轉換爲數據庫,例如seam,唯一的解決方法似乎是使用分離對象或單獨的視圖模型。

我們真的很喜歡使用附加對象如何使用(對於我們的案例),事情真的很容易理解,而且開發起來很快。

有沒有解決方案,我們可以繼續使用對話中的附加對象工作?

回答

2

作爲Seam2的忠實粉絲,我使用會話,會話範圍實體管理器以及設置爲手動和分離對象的清除模式編寫了出色的應用程序。但是,我們現在必須承認,儘管在Seam手冊中強烈推送並且在Hibernate是JPA實現方面運行良好,但這種模式已經基本上被打破了。原因在Mark Struberg的這篇文章中有解釋:Is There A Way To Fix the JPA EntityManager?

所以,答案是否定的,沒有實際的解決方案來繼續在對話中處理連接的對象。你應該使用分離的對象。

還有另一個偉大的CDI博客作者試驗了對話範圍實體管理器:Conversational CRUD。如果您繼續嘗試使用附加對象,可能值得閱讀。