如果有人可以解释这个注释是做什么的,以及我们到底什么时候使用它:
@Transactional(propagation=Propagation.REQUIRED)谢谢
发布于 2012-05-24 23:01:15
当传播设置为PROPAGATION_REQUIRED时,将为应用该设置的每个方法创建一个逻辑事务作用域。每个这样的逻辑事务作用域都可以单独确定仅回滚状态,外部事务作用域在逻辑上独立于内部事务作用域。当然,在标准PROPAGATION_REQUIRED行为的情况下,所有这些作用域都将映射到同一物理事务。因此,在内部事务作用域中设置的仅限回滚的标记确实会影响外部事务实际提交的机会(正如您预期的那样)。

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html
发布于 2012-05-24 23:18:11
如果除了Spring Docs中提供的用法之外,还需要外行的用法说明
考虑下面的代码。
class Service {
@Transactional(propagation=Propagation.REQUIRED)
public void doSomething() {
// access a database using a DAO
}
}当调用doSomething()时,它知道在执行之前必须在数据库上启动一个事务。如果此方法的调用方已经启动了一个事务,则此方法将在当前数据库连接上使用相同的物理事务。
此@Transactional注释提供了一种方法,用于在代码执行时告诉您的代码它必须有一个事务。如果没有它,它将无法运行,因此您可以在代码中假设不会在数据库中留下不完整的数据,或者在发生异常时必须清理一些东西。
事务管理是一个相当复杂的主题,因此希望这个简化的答案能有所帮助
发布于 2012-05-24 23:03:39
在Spring应用程序中,如果您使用<tx:annotation-driven/>启用基于注释的事务支持,并使用@Transactional(propagation=Propagation.REQUIRED)注释任何类/方法,那么Spring框架将启动一个事务,并执行该方法并提交该事务。如果发生任何RuntimeException,则事务将被回滚。
实际上propagation=Propagation.REQUIRED是默认的传播级别,您不需要显式地提到它。
欲了解更多信息,请访问:http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations
https://stackoverflow.com/questions/10740021
复制相似问题