2011-07-14 170 views
0

根據JTA規範:TransactionSynchronizationRegistry的用途是什麼?

此接口旨在用於系統級應用程序服務器 組件,如持久性管理器,資源適配器,以及 EJB和Web應用程序組件的使用。這爲 註冊同步對象提供了特殊排序語義, 將資源對象與當前事務相關聯,獲取當前事務的 事務上下文,獲取當前的 事務狀態,並標記回滾的當前事務。

另外:

的getResource()和putResource()方法的用戶是管理代表 呼叫者的特定交易數據庫 組件。主叫方提供的交易特定數據不是立即刷新到事務徵募資源,而是 緩存。高速緩存的數據存儲在與調用者的事務性上下文處於零或一對一關係的與事務相關的數據結構 中。

但是我仍然感到困惑。

首先,「提供註冊具有特殊排序語義的同步對象的功能」的含義是什麼意思,以及如何設置排序?

那麼,有什麼用例需要「將資源對象與當前事務關聯」?

回答

3

首先,什麼是「[...]提供註冊特殊排序語義 同步對象的能力」的含義及如何 是可以設置的排序?

「特殊排序語義」的registerInterposedSynchronization的javadoc,這是試圖解釋這些聽衆是如何相對於Transaction.registerSynchronization解僱解釋。

那麼,有什麼需要「將 資源對象與當前事務關聯」的用例呢?

putResource/getResource讓調用者存儲「事務本地」對象。

例如,JPA容器在使用時可能會registerInterposedSynchronization。有狀態會話bean可能會在SessionSynchronization.beforeCompletion期間更新實體。 EntityManager將使用putResource將實體存儲在當前事務中,然後在其Synchronization.beforeCompletion期間將數據刷新到數據庫,這將保證在以後運行。