spring管理事务

数据库连接池:

<bean id="dataSource" class="" > 
	     <property name="url" value="${jdbc.url}" />
	     <property name="username"><value>${jdbc.username}</value></property>
	     <property name="password" value="${jdbc.password}" />
	     <property name="driverClassName"  value="${jdbc.driverClassName}"></property>
	
	     <property name="maxActive"><value>50</value></property>
	     <property name="initialSize"><value>5</value></property>
	     <property name="maxWait"><value>60000</value></property>
	     <property name="minIdle"><value>5</value></property>


</bean>

创建sqlsessionFactory:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:sqlMap/sqlMapConfig.xml"></property>
</bean>

事务管理器:

<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
</bean>


<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

声明式事务:

<tx:advice id="txadvice" transaction-manager="transactionManager">
 <tx:attributes>
    <tx:method name="save*" progatation="REQUIRED"/>
 <tx:attributes>
</tx:advice>
progatation是传播规则:

1.MANDATORY:表示当前方法要在事务中,事务不存在抛异常。

2.NESTED:存在事务则嵌套在事务中执行,可以独立于当前事务单独的提交或回滚。

3.NEVER:不在事务中执行,如果有事务就抛异常。
4. NOT_SUPPORTED:不在事务中执行,如果有事务,在执行这个方法时,事务被挂起。

5.REQUIRED:在事务中运行,如果事务不存在就启动一个事务,常用。

6.SUPPORTS:不需要事务,但是如果有就在事务中运行。

7.REQUIRES_NEW:有当前事务则当前事务挂起,在自己的事务中运行,如果没有当前事务就启动一个事务执行。


isolation属性:

1.Default:使用数据库默认级别。

2.READ_UNCOMMITTED

3.READ_COMMITTED

4.REPEATABLE_READ

5.SERIALIZABLE


read_only属性:指定事务为只读

rollback-for:指定事务那些检查型异常会回滚而不提交。

no-rollback-for:指定那些异常应该继续执行而不回滚。

timeout:指定事务超时时间。


这里只是定义个一个通知,还要定义切面:

<aop:config>
   <aop:advisor pointcut="" advice-ref="txadvice"/>
</aop:config>

除了tx:advice外还可以注解驱动事务:

<tx:annotation-driven transaction-manager="ttransactionManager"/>
这个注解会扫描@Transactional。

@Transactional(progatatiob=Progatation.supports,readOnly=true)
public class AServiceImpl implements AService{
   
  @Transactional(progatation=Progatation.REQUIRED,readOnly=true)
  public void save(User user){
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值