`
wu-yansheng
  • 浏览: 15762 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

事务1-spring 事务支持

阅读更多
    当你涉及到两个其他业务方法一起绑定为一个业务操作的时候,例如一个ATM取款的简单操作:
ATM机器吐钱2和更新你帐户存款就是一个取钱的主要操作,它就需要要求如果两者都成功,即
一起提交,如果有一者失败,即回滚该两个操作,这种时候就需要事务了。
一、事务的特性:原子性、一致性、分离性、持久性。
1、原子性:事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
2、一致性:事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
3、分离性:分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。
4、持久性:持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持久性通过数据库备份和恢复来保证。
二、为什么要用Spring来管理事务呢,有什么好处呢?
1、首先当然是工作量上的减轻,比传统要自己手工在程序写事务要减少很多工作,用spring只是需要简单的配置即可,灵活性也有提高,spring可以灵活的针对业务方法取消或者增加事务,也可以灵活配置事务的隔离级别等。
2、spring事务支持对于不同的事务api支持,比如jdbc,dbcp,hibernate等,可通过简单的配置支持JTA事务。
三、如何使用Spring来管理事务:
1、配置事务控制器:
<bean id="transactionManager"		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
</bean>

2、AOP拦截器实现事务,统一配置了事务:
<aop:config>
	<aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* com.cun.transaction.*Transaction.*(..))"/>
	</aop:config>
	<tx:advice id="txAdvice">
		<tx:attributes>
			<tx:method name="get*" read-only="true" />
			<tx:method name="query*" read-only="true" />
			<tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="add*" propagation="REQUIRED" />			
		</tx:attributes>
</tx:advice>

3、为单独一个业务方法配置事务,并指定为PROPAGATION_REQUIRES_NEW的事务:
<bean id="potentialMemberProcessBussines" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
 		<property name="transactionManager"><ref bean="transactionManager"/></property>
 		<property name="target">
 			<bean class="com.csair.cbd.member.services.business.PotentialMemberProcessBussines"/>
 		</property>
 		<property name="transactionAttributes">
 			<props>
 				<prop key="singelProcess">
 					PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,timeout_360,-Exception
 				</prop>
 			</props>
 		</property>
 	</bean>

Spring基本的事务配置就在这里啦,具体配置说明后续。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics