@Transactional spring 配置事务

@Transactional spring 配置事务

 
1. 在需要事务管理的地方加 @Transactional 注解。 @Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。
但是,Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解。在多数情形下,方法的事务设置将优先于类的事务设置执行。
 

2. 在Spring配置文件加

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<aop:aspectj-autoproxy proxy-target-class="true"/>

<tx:annotation-driven transaction-manager="transactionManager"/>
3. @Transactional 有关的设置
默认的 @Transactional 设置如下:
 
  • 事务传播设置是 PROPAGATION_REQUIRED 使用现有事物,没有则启动新事物
  • 事务隔离级别是 ISOLATION_DEFAULT
  • 事务是 读/写 false
  • 事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
  • 任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚

这些默认的设置当然也是可以被改变的。 @Transactional 注解的各种属性设置总结如下:

 

@Transactional 注解的属性

属性类型描述
传播性枚举型:Propagation可选的传播性设置
隔离性枚举型:Isolation可选的隔离性级别(默认值:ISOLATION_DEFAULT
只读性布尔型读写型事务 vs. 只读型事务
超时int型(以秒为单位)事务超时
回滚异常类(rollbackFor)一组 Class 类的实例,必须是Throwable 的子类一组异常类,遇到时 必须 进行回滚。默认情况下checked exceptions不进行回滚,仅unchecked exceptions(即RuntimeException的子类)才进行事务回滚。
回滚异常类名(rollbackForClassname)一组 Class 类的名字,必须是Throwable的子类一组异常类名,遇到时 必须 进行回滚
不回滚异常类(noRollbackFor)一组 Class 类的实例,必须是Throwable 的子类一组异常类,遇到时 必须不 回滚。
不回滚异常类名(noRollbackForClassname)一组 Class 类的名字,必须是Throwable 的子类一组异常类,遇到时 必须不 回滚

@Transactional
public class ManagerService implements IManagerService {
    private IAdminsDao adminsDao;
    private IUsersDao usersDao;
    public void setAdminsDao(IAdminsDao adminsDao) {
         this.adminsDao = adminsDao;
    }
    public void setUsersDao(IUsersDao usersDao) {
         this.usersDao = usersDao;
   }
   @Transactional
   public void validateTbManager(Admins admins, Users users) {  
       adminsDao.save(admins);
        usersDao.save(users);
   }

}

注解@Transactional cglib与java动态代理最大区别是代理目标对象不用实现接口,那么注解要是写到接口方法上,要是使用cglib代理,这是注解事物就失效了,为了保持兼容注解最好都写到实现类方法上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值