java批量事物管理_[疯狂Java]JDBC:事务管理、中间点、批量更新

1. 数据库事务的概念:

1) 事务的目的就是为了保证数据库中数据的完整性。

2) 设想一个银行转账的过程,假设分两步,第一步是A的账户-1000,第二步是B的账户+1000。这两个动作必须是连贯的,假设中间断开(出现问题等)比方第一步运行完之后发生异常而终止了操作。那么A就白扣了1000。而B的账户也没有钱添加,这就发生了非常严重的错误;

!!

以上这个案例能够看出:

a. 这两步必须是连贯的,一起合成的。应该作为一个总体逻辑运行单元来运行。

b. 假设两步顺利运行完成那么数据就是完整的。假设中间断开,那么断开时数据就是不完整的(错误的);

!以上能够总结出,上面两步要么必须所有都做完。要么就所有都不做,否则就会导致数据错误。!

3) 为解决以上问题,仅仅要将上面两步包装成一个事务即可,那么事务具有哪些特点呢?

i. 首先事务肯定包括了若干数据库操作(肯定都是改动数据库的操作),由于仅仅有改动(update)才有可能导致数据的不完整,而事务就是为了解决不完整问题的;

ii. 事务最大的特点就是要么不做,要做就所有做完,那它是怎样实现这个要求的呢?这个问题从双方面来说:

a. 第一就是要做就所有都做完,这当然是最好的。假设每一步运行都是顺顺利利地没有出现不论什么意外。那就自然所有都做完了,这没什么好说的。

b. 那怎样做到“要么就不做“?你又不能预測到本次运行是否会出现异常!非常多异常都是一些随机因素造成的呀!

c. 非常显然,做还是要做的,关键是做了一半出现了异常应该怎么解决?

d. 事实上原理非常easy,一旦出现了异常,就把刚刚做过的改动撤销了不即可了吗?事实上事务就是这样来实现“要么就不做的“。

e. 这个操作就叫做回滚:事务在运行的时候会直接将更新底层的数据。假设一旦发生了暂时无法解决的异常情况,就会立刻终止事务。并撤销刚刚运行的所有更新,将数据库还原到事务运行之前的状态,这就是事务的回滚了!

4) 事务要生效必须要提交:

i. 即使把事务完整的运行完成了必须要提交才干使对数据的改动真正生效。

ii. 假设不提交就结束事务了,即使前面所有都运行完了也会所有回滚掉。

iii. 提交操作即commit,事务运行完成后一定要记得commit使之真正生效哦!

!!实际上在提交之前对数据的改动都仅仅是在内存(缓存)映像中进行的,之前做完改动后使用select查询会发现结果中数据确实被更新了,但那仅仅是假象,由于被更新的仅仅是内存中的映像,假设你未提交就断开又一次连接,再进入后select下面结果发现并未改动。

!!仅仅有提交commit后才会把对内存映像做出的改动永久地写入物理存储设备中!!

。commit后断开再重连,select一下就会发现数据真正被改动了;

2. 事务的理论级概念:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值