Javaweb 事务实现

9 篇文章 0 订阅

**

事务:

**

为什么需要事务

需要:有一张银行账户表,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异常时会被捕捉到 ,回滚

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值