Transaction(事务)
不知道诸位有没有发现一个问题,很多的术语是在被翻译之后才变得晦涩难懂的。Transaction的字面意思是交易,本质属性就是一手交钱一手交货。
举个简单的例子,如果我们去ATM取钱,我们在ATM取了多少钱必须要立刻反馈到银行,银行要立刻更新我们的账户余额,并及时反馈给ATM机。假如在这个流程中银行没有考虑数据的一致性和同步性,就可能会出现取钱成功但是账户没有扣款,或是存钱成功但是账户没有进账。
Transaction的作用和并发操作中数据的线程安全是一样的,都是确保在经过一系列的操作之后数据在系统任何位置都保持一致。对于数据敏感型的应用,transaction是很重要的一个环节。
在Spring中实现transaction很简单。我们只需要完成以下两个步骤:
- 在需要进行transaction的方法上添加注释
@Transactional
public class TransactionClass{
public Object getObject(String name);
}
@Transactional
的注释会默认将类中所有public的方法添加transaction属性。我们可以对@Transactional
的属性进行设置
- 在spring配置xml中添加
<tx:annotation-driven transaction-manager="txManager'/>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
DataSourceTransactionManager
是Spring jdbc中一个默认Transaction管理器,它可以通过<tx:annotation-driven>
的配置找到所有的@Transactional注解进行管理。
网友评论