JDBC事务处理

JDBC事务处理

1、数据库事务的描述

  • 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。

  • 事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

  • 为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。

生活小案例:假如小明银行卡中有100元,小李银行卡中也有100元。这时小明转账给小李50元。这时正确的结果应该是小明应该有50元,小李有150元。但是在转账的过程当中有可能会出现一些问题,当小明转账过去后 自己的银行卡扣除了50元,这是突然转账系统崩呢系统重启恢复时丢失了崩溃前的转账记录。这时虽然小明已经在崩的前一秒将钱已经转给了小李,自己的银行卡只有50元,但是小李的银行卡却还只有100元。这时就体现数据库事务的重要性呢!

总结:要么都成功,要么都失败!

2、jdbc事务处理

在JDBC中处理事务,都是通过Connection完成的。

同一事务中所有的操作,都在使用同一个Connection对象。

Connection的三个方法与事务有关:

  • setAutoCommit():设置是否为自动提交事务,如果true(默认值为true)表示自动提交,也就是每条执行的SQL语句都是一个单独的事务,如果设置为false,那么相当于开启了事务了(多个sql语句执行一个事务);con.setAutoCommit(false) 表示开启事务。

    若此时 Connection 没有被关闭,还可能被重复使用,则需要恢复其自动提交状态 setAutoCommit(true)。尤其是在使用数据库连接池技术时,执行close()方法前,建议恢复自动提交状态。

  • commit():在所有的 SQL 语句都成功执行后,提交结束事务。

  • rollback():出现异常时回滚结束事务。

    数据一旦提交,就不可回滚。

​ 数据什么时候意味着提交?

  1. 当一个连接对象被创建时,默认情况下是自动提交事务:每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚。
  2. 关闭数据库连接,数据就会自动的提交。如果多个操作,每个操作使用的是自己单独的连接,则无法保证事务。即同一个事务的多个操作必须在同一个连接下。

【小明向用户小李转账50案例】

public void JDBCTest() {
   
	Connection conn = null;
	try {
   
		// 1.获取数据库连接
		conn = JDBCUtils.
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SC_IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值