开发者学堂课程【JDBC数据库开发进阶:JDBC 中的事务】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/32/detail/681
JDBC 中的事务
处理事务:
在 jdbc 中处理事务,都是通过 connection 完成,都是自动提交,手动提交就是开启事务。
自动提交:
既执行一条可提交,不用我们提交,事务往往是把多个事务弄在一起,往往是try开始时提交事务,结束时提交事务,如未发生错误,则执行事务,如发生错误,在commit 时发生异常,它本身不可能异常,如异常则可能是失联,这时回滚即可。
如未提交事务,回滚事务,这时事务自动回滚 以失败告终,格式极其重要 接下来就是写代码。
数据库:
首先我们写项目的时候,要导包,mysql 驱动导进来,现在的项目,需要将准备工作做好,如以前的小工具都需提前弄好,演示转账,得有一个 dao,dao 里面写一个updatebalanca,告诉金额,指定用户的余额,用 runtime 作一个转换,得到指定工具。
第二件事要给出 sql 模板,创建 pstmt,所有参数都用问号代替,,再下一步,对参数进行赋值,问号的顺序需要明白,最后执行,用 executeupdate。转账方法,from 到 to,
格式:
开启事务…提交事务,回滚事务,对事务的操作必须使用 connection 对象。要保证在一个事务内,必须前后使用一个 connection 对象,如是不同的 connection,则不是一个对象,创建事务对象,在开启事务和提交事务的中间,给 from 减去相应金额,给 to 加上相应金额在这中间抛一个异常,这两句使用的 connection不能保证都是同一个。
所有对 connection 的操作都在service层进行的处理,明天要去处理这一问题,把所有对 connection 的操作隐藏起来,需要自定义的工具隐藏起来。
boolean.:
设置是否为自动提交事务,如果true(默认值是true)表示自动提交,也就是每条执行的SQL语句都是一个单独的事务,如果设置false,那么就相当于开启了事务了
con.setautocommit(false):
表示开启事务!给 from 减去相应金额 给to减去相应金额
commit():
提交结束事务;con.commit();表示提交事务。
rollback():
回滚结束事务。
con.rollback();
表示回滚事务。
对事务的操作必须使用 connection 对象,同一事务中的所有操作,都是使用同一个 connection 对象。
如果N次使用的都是不同的 connection 对象,那么就不是同一操作。
public void
1. 得到连接对象
2. 给出 sq1模板,创建 pstmt
3. 对参数进行赋值
4. 执行之
演示所有对 connection 的操作都在service层进行的处理,把所有对 connection 的操作隐藏起来,这需要使用自定义的小工具,所有对事务的控制都转移到 public class 修改指定用户的余额,param name ,param balance。
列入转账,要 public class 转账方法,从 from 到 to。
创建 dao 对象,在原先基础上加上相应金额或者减去相应金额,
所有对连接的管理都转移到业务上了。
</div>