自动和手动提交事务

增加(自动提交事务)

int result=  runner.update(" insert into student_info values(?,?,?,?)",new Object [ ] {6,"name6","loc6","psw6"} );
System.out.print(result);

删除(自动提交事务)

int result=  runner.update(" delete from student_info where id=?",2 );
System.out.print(result);

手动提交事务:

  转账,应该分两步,先减张三的钱,再给李四加钱。要么同时成功,要么同时失败。

  步骤:

如果既要保证数据安全,又要保证性能,可以使用threadlocal

Connection不可再分,一个connection只能完成一次增删改查,而且完成之后就提交,但是我需要多次增删改查,再提交,就要用到threadlocal,在第一个dao操作时 真正的创建了一个connection对象,然后在其他几次dao操作时,借助t1的本身特性 自动将该connection复制多个(connection只创建了一个,因此该connection中的所有操作 必然对应于同一个事务)并且t1将connection在使用层面复制了多个,因此可以同时完成多个dao操作,提交只提交一次。

Threadlocal:为每个线程复制一个副本,每个线程可以访问自己内部的副本,别名线程本地变量

Set() 给t1中存放一个变量

Get() 从t1中获取变量(副本)

Remove() 删除副本

对于数据库来说,一个连接对应一个事务,一个事务可以包含多个dml操作(增删改查)

所有对象.方法都需要判断是不是为空

事务流程:开启事务(将自动提交变为手动提交就是开启事务)

           进行各种dml操作 正常 将刚才所有dml全部提交

                        失败(异常)将刚才所有dml全部回滚(全部失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值