Spring事物配置

事务是访问并可能更新数据库中各种数据项的一个程序执行单元。事务通常由高级数据库操纵语言或编程语言书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句来界定。事务由事务开始和事务结束之间执行的全体操作组成。

例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性
spring事物xml配置:
结合spring的aop和advice,dataSource配置
	<!-- 事务管理 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
<!-- 事务通知 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="*" isolation="DEFAULT"/>    <!--所有方法使用默认通知-->
		</tx:attributes>
	</tx:advice>
	<!-- 事务切面 -->
	<aop:config>	
		<aop:pointcut expression="execution(public * cn.sm1234.service.impl.AccountServiceImpl.*(..))" id="pt"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
	</aop:config>
事物配置xml结合注解方式配置:

依然需要DataSourceTransactionManager:

        <!-- 事务管理 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 开启Spring事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>

在java代码的实现类(需要用到事物管理的地方)加使用@Transactional   (isolation=Isolation.DEFAULT)

Spring事物配置