Spring学习—事务

1、什么是事务
事务是数据库操作的最近本单元,逻辑上一组操作,要么都成成,要么都失败
2、事务的四个特性

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

3、声明式事务(基于注解)
1.spring 配置文件配置事务管理器

<bean  class="org.springframework.jdbc.core.JdbcTemplate">
          <property name="dataSource"  ref="poolDataSource"></property>
      </bean>
      <!-- 1、配置事务管理器 -->
      <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource"  ref="poolDataSource"></property>
      </bean>
      <!-- 2、开启基于注解的事务控制,依赖tx名称空间 -->
      <tx:annotation-driven  transaction-manager="transactionManager" />
      <!-- 3、给事务方法加注解 -->
        @Transactional

3、声明式事务(完全注解反方式)

  1. 创建配置类代替配置文件
  2. 注解开启事务
  3. 配置
@Configuration
@ComponentScan(basePackages = {"com.chzu.spring05"})
@EnableTransactionManagement //开启事务
public class TxConfig {
@Bean    
public DataSource getDataSource(){        
DruidDataSource source = new DruidDataSource();        source.setDriverClassName("");        
source.setUrl("");       
source.setUsername("");        
source.setPassword("");        
return source;    
}}

//JDBCTemplate和DataSourceTransactionManager也要使用@Bean添加

4、声明式事务管理
@Transactional注解中可以配置参数

  1. timeout:事务超出指定时长后自动回滚并终止(以秒为单位)
  2. readOnly: 只读事务,优化查询速度,如果事务全是查
  3. noRollbackFor:那些异常不需要回滚
  4. rollbackFor:那些异常需要回滚
  5. isolation:隔离级别
  6. propagation:事务的传播行为

异常分类

  1. 运行时异常:可以不用处理 默认都回滚
  2. 编译时异常:必须处理 try catch 或 throw 默认不回滚
//不需要回滚
@Transactional(noRollbackFor= {ArithmeticException.class,} )

//事务的隔离性级别
@Transactional(isolation = Isolation.READ_COMMITTED)    

事务的隔离性级别
脏读:
幻读:
不可重复读:

  1. 读未提交:
  2. 读已提交:
  3. 可重复读:
  4. 序列化
脏读幻读不可重复读
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
OrcleMysql
READ_UNCOMMITTED支持
READ_COMMITTED支持支持
REPEATABLE_READ有(默认)
SERIALIZABLE支持

事务的传播行为
有七种传播行为,前两种用的最多

  1. REQUIRED:如果有事务在运行,当前方法就在这个事务内运行,否则就开启一个新的事务运行
  2. REQUIRED_NEW:当前方法必须开启新的事务,并在它自己的事务内运行,如果有事务正在运行,应该将它挂起
@Transactional(propagetion=Propagation.REQUEIRED)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值