@Transactional做什么?

osh*_*osh 8 java spring transactions spring-jdbc

我知道这可能是重复的,具有讽刺意味的是,在我开始阅读这里和那里之前,我知道我知道它是什么(无需说出来但我仍然会说,请纠正我错在哪里):
它减轻程序员必须使用transaction.begin()和transaction.begin().如果你有一个调用两个DAO方法的方法,通常每个方法都包含commit()transaction.begin 包含实际操作并调用它们,那么它将导致两个事务(如果前面的dao方法也应该回滚,则可能存在回滚问题).但是,如果你用transaction.commit你的方法,然后这些人DAO呼叫将被包裹在一个单一的@transactional- begin()周期.当然,如果你使用commit() DAO,一定不要使用@Transactionalbegin() 方法我认为.

小智 5

您可以Transactions通过两种方式处理您的问题:ProgrammaticallyDeclarative

当您使用transaction.beginand transaction.commit和...时,您将以Transactions编程方式进行处理。这样,您可以更好地控制Transaction边界,但最终会Cross Cutting Concerns在项目中散布很多类似的代码()。

但是以Declarative某种方式,处理的代码Transactions与您的业务逻辑是分开的,并且不会分散在您的整个项目中。这是的主要概念之一Aspect Oriented Programming


Xst*_*ian 0

我建议您使用这个链接来解释 Spring Transaction 的所有内容。

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/transaction.html

您还应该看到有关事务的相同属性(传播、rollbackFor 等),如果您使用这些属性,事务行为可能会改变。