2012-03-12 67 views
0

我一直在尋找從Java代碼傳播JTA事務到Oracle存儲過程的可能性,並且發現沒有什麼真正相關的。我問這是因爲一位同事正在處理這件事,並告訴我這對他有效。事務傳播和持久性上下文與Oracle存儲過程的同步

我想知道的是,由於事務仍然打開並且隨後存儲過程被調用(此過程不控制它自己的事務),所以某些操作未被刷新,情況下存儲過程是否能夠在持久性上下文中查看懸掛操作?換句話說,持久性上下文會以某種方式與下面的數據庫的事務內存同步嗎?

我正在爲Oracle JPA考試唸書,而且這本書沒有在我正在閱讀的書中描述。然而,我讀過一些我搜索過的網站,有人說這種事務傳播是有效的,因爲JTA和某些JDBC驅動程序中的數據庫事務之間存在整合(我無法想象它是如何工作的,事務管理器是否知道的數據庫事務??)。

在此先感謝!

+0

對於那些對此主題感興趣的讀者,請閱讀coderanch主題討論:http://www.coderanch.com/t/570119/ORM/java/Transaction-propagation-Persistence-Context-synchronization – 2012-03-22 14:10:10

回答

2

我用Spring + Hibernate和自制框架+ Hibernate做了同樣的事情。我相信同樣的事情將與JPA一起工作。

如果您在與JPA相同的交易中致電您的SP,則一切順利,唯一的問題就是您提到的問題,因此請致電您的persistenceManager之前撥打flush(),然後再調用您的SP實體將在交易的上下文中寫入數據庫。