2013-06-23 79 views
1

我是EJB新手。我讀過豆管理事務(BMT)的一個副作用,就是如果我們調用另一個BMT bean的方法,事務不會傳播。 但由於第三個ACID屬性(隔離)是否意味着第二個方法(內部)不會看到第一個方法(外部)中所做的更改?Bean管理事務:事務傳播

回答

1

Bean管理事務僅意味着您自己編寫bean中的事務邊界。

容器管理事務意味着你讓容器(即應用服務器)做的打開,關閉,rollbacking,骯髒的工作...您的交易你。

在這兩種情況下,通常是一些中央事務管理器是用來訪問當前事務,或創建一個新的。

這是否意味着第二個方法(內)將不會看到 是在第一方法(外)

所做的更改。如果您使用相同的事務管理器(和相同的交易)在兩種方法中,內部方法應該看到外部的變化。

+0

但是,如何使用同一交易/事務管理器在兩個無狀態bean的方法有兩種,對於example.Do我需要通過他們的方法的參數? –

+1

使用EJB時​​,可以使用@Resource批註插入EJBContext,然後調用context.getUserTransaction()來獲取事務。您不需要將事務從外部方法傳遞到內部方法,因爲您使用的框架(例如,數據庫訪問的hibernate)會自動使用當前打開的事務。 – Tom