A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© feiling 高级黑马   /  2017-7-18 13:38  /  732 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 feiling 于 2017-7-18 13:40 编辑

Spring_day021.1 事务
        概述:一组业务操作ABCD,要么全部成功,要么全部不成功
        特性​:ACID
                原子性:整体
                一致性:数据的完整性
                隔离性:并发
                持久性:结果,假如事务提交了,数据就永久进入数据库了
        隔离问题:
                脏读:一个事务读到另一个事务没有提交的数据
                不可重复读:一个事务读到另一个事务已提交的数据(update)
                虚读(幻读):一个事务读到另一个事务已提交的数据(insert)
        隔离级别:
                read uncommitted:读未提交。存在3个问题
                read committed:读已提交。解决脏读,存在2个问题
                repeatable read:可重复读。解决:脏读、不不可重复读。存在一个问题
                serializable:串行化。都解决,单事务。
  • mysql事务操作--简单

   
[Java] 纯文本查看 复制代码
ABCD一个事务

	Connection conn = null;

	try{

	//1.获得连接

	//2.开启事务

	conn.setAutoCommit(false);

	A

	B

	C

	D

	//3 提交事务

	conn.commit();	

	}catche(){

	//4 回滚事务

	conn.rollback();

	}
  • mysql事务操作--Savepoint
    [Java] 纯文本查看 复制代码
    	需求:AB(必须),CD(可选)
    		工资发,公司钱减少,员工钱增加。额外会发条短信。
    		短信不发,工资不发。。。
    	Connection conn = null;
    
    	try{
    
    	//1.获得连接
    
    	//2.开启事务
    	conn.setAutoCommit(false);
    	A
    	B
    	savepoint=conn.setSavepoint();
    	C
    	D
          
    	//3 提交事务
    	conn.commit();	
    	}catche(){
    
    	//判断保存点是否有值
          if(savepoint!=null){
            	//回滚到CD之前
            	conn.rollbak(savepoint);
            	//提交AB
            	conn.commit();
          }else{
            	//回滚到AB之前
            	conn.rollback();        
          }
    	conn.rollback();
    	}

1.2 事务管理介绍
transaciton -->tx
1.2.1 导入jar包spring-tx-3.2.0.RELEASE.jar1.2.2 三个顶级接口
  • PlatformTransacitonManager.class
  • TransactionDefinition.class
  • TransactionStatus.class

  • PlatformTransacitonManager平台事务管理器,spring要管理事务,必须使用事务管理器

    • 进行事务配置时,必须配置事务管理器。

  • TransactionDefinition:事务详情(事务定义、事务属性),spring用于确定事务具体详情,例如:隔离级别、是否只读、超时时间等

    • 进行事务配置时,必须配置详情,spring将配置顶封装到该对象示例

  • TransactionStatus:事务状态,spring用于记录当前事务运行状态。例如:是否有保存点,事务是否完成。

    • spring底层根据状态进行相应操作。


1.2.3 PlatformTransactionManager  事务管理器
l  导入jar包:需要时平台事务管理器的实现类
spring-jdbc-3.2.0.RELEASE.jar jdbc开发spring-orm-3.2.0.RELEASE.jar 整合hibernatespring-tx-3.2.0.RELEASE.jar
l  常见的事务管理器
DataSourceTransactionManager ,jdbc开发时事务管理器,采用JdbcTemplate
HibernateTransactionManager,hibernate开发时事务管理器,整合hibernate
l  api详解
  • TransactionStatusgetTransaction(TransactionDefinition definition) ,事务管理器通过“事务详情”,获得“事务状态”,从而管理事务。
  • void commit(TransactionStatus status)  根据状态提交
  • void rollback(TransactionStatus status) 根据状态回滚


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马