源代码中的Hibernate事务注释 - 类和方法级别之间的区别使用?

时间:2011-01-04 12:47:01

标签: hibernate transactions

我试图理解将事务注释应用于类与方法(甚至在属性级别甚至?)时行为的差异。有没有人为此有一个可靠的联系,或者甚至可以为我简洁地捕捉这些差异?

我发现有关这些注释的数百个链接似乎只解决了如何在配置文件中而不是在源中使用它们。在极少数情况下甚至提到在源头中使用它们时它非常手工波动。

这是我在班级上的意思的具体例子:

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class MyKickAssClass {
}

及相关方法级别:

public class MyOtherKickAssClass {
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void entryPointMethod() {
        //do some work, call other methods of this class, other fun stuff
    }

我可以猜测这些情况下的行为是什么,但找到具体的解释和例子一直很令人头疼。

我们正在使用JBoss。

提前谢谢。

1 个答案:

答案 0 :(得分:7)

来自JavaDoc:

  

可以在bean类上指定注释和/或可以在类的方法上指定注释,这些方法是业务接口或无接口视图的方法。

     

在bean类上指定TransactionAttribute批注意味着它适用于该类的所有适用的业务方法。在方法上指定注释仅将其应用于该方法。如果在类和方法级别应用注释,则方法值将覆盖,如果两者不同意。

http://download.oracle.com/javaee/6/api/javax/ejb/TransactionAttribute.html

我还建议阅读Java EE教程:

http://download.oracle.com/javaee/6/tutorial/doc/bncih.html