Javaweb 事务实现

**

事务:

**

为什么需要事务

需要:有一张银行账户表,A用户给B用户转账:A账户减少,B账户增加,但是A操作完之后断电了????
解决方案:A减少钱,但是不要立即修改数据表,B收到钱之后,同时修改数据表

什么是事务
事务:transaction,一序列要发生的连续的操作。
事务的特点:连续的操作要么全部成功,要么全部失败。
事情安全:一种保护 连续操作 同时满足(实现)的一种机制。
事务安全的意义:保证数据操作的完整性。

A给B转账10块钱。
操作过程:
A-10块钱
B+10块钱
具体的代码实现



Service:
      Bool transform(from,to,money){
      Dao.increate(to,money);
      Int  I = 5/0;
      Dao.Decrease(from,money)

}


实现步骤:

(1)表的类型:innoDB
show create table 表名
看一下自己的引擎是不是Innodb

在这里插入图片描述

不是则用下面sql语句修改
alter table mysql02.user engine=innodb;
我数据库的是mysql02、表user

(2)确保2次操作的connection是同一个吧。
执行的2次SQL,必须在同一个connection和session会话,
DAO方法内部:需要使用到Connection,
在service层创建connection对象,需要将connection对象专递给DAO层
注意:dao中所有的方法都需要一个connection参数。将connection对象和线程进行绑定。

(3)开启事务



Try{

         connection.setAutoCommit(false );//将自动提交关闭
         Dao.increate(connection,to,money);//+操作将connect放到dao层
         Int  I = 5/0;//设置除0异常,可以先将这行代码注释,正常运行后
          Dao.Decrease(connection,from,money);//-操作将connect放到dao层
         Connection.commit();//提交

}catch(Exception e){
Connection.rollback()//回滚
System.out.println(e);
}

遇到除0异常时会被捕捉到 ,回滚

猜你喜欢

转载自blog.csdn.net/simple_start/article/details/89441279
今日推荐