2013-06-23 50 views
1

我是EJB新手。我读过豆管理事务(BMT)的一个副作用,就是如果我们调用另一个BMT bean的方法,事务不会传播。 但由于第三个ACID属性(隔离)是否意味着第二个方法(内部)不会看到第一个方法(外部)中所做的更改?Bean管理事务:事务传播

回答

1

Bean管理事务仅意味着您自己编写bean中的事务边界。

容器管理事务意味着你让容器(即应用服务器)做的打开,关闭,rollbacking,肮脏的工作...您的交易你。

在这两种情况下,通常是一些中央事务管理器是用来访问当前事务,或创建一个新的。

这是否意味着第二个方法(内)将不会看到 是在第一方法(外)

所做的更改。如果您使用相同的事务管理器(和相同的交易)在两种方法中,内部方法应该看到外部的变化。

+0

但是,如何使用同一交易/事务管理器在两个无状态bean的方法有两种,对于example.Do我需要通过他们的方法的参数? –

+1

使用EJB时​​,可以使用@Resource批注插入EJBContext,然后调用context.getUserTransaction()来获取事务。您不需要将事务从外部方法传递到内部方法,因为您使用的框架(例如,数据库访问的hibernate)会自动使用当前打开的事务。 – Tom