持久层框架JDBC篇(2)

编程

     掌握了JDBC最基本的与数据库交互后,接下来,我们要修炼进阶篇了,此篇涉及大量的专业名词,需要有一定天赋的修行者修炼,不过,我相信,能够轻松通过第一篇的你,绝对是那个骨骼精奇,天资聪慧的修行者~那么,我们进入此次的修行把---JDBC的事务管理

     事务:在一个业务场景中,保持一系列操作的整体性,我们称作事务~简单来讲,在一系列的操作中,要么,所有操作都生效,要么所有操作都不生效,不存在某些操作生效,某些操作不生效的情况。举个例子~业务场景:小鱼儿转10定金子给花无缺;涉及的操作:1.钱从小鱼儿的兜里转出~2.钱转入到花无缺的兜中~,两个操作缺一不可,如果操作1在途中受阻,那么钱就会回到小鱼儿的兜中,只有这样,才能保证我业务操作的完整性。

    事务的特性:

1、原子性(atomicity):组成事务的语句形成了一个逻辑单元,不能只执行一部分;

2、一致性(consistency):在事务处理执行前后,数据库与理论值是一致的(数据库完整性约束);

3、隔离性(isolcation):一个事务处理和另一个事务处理相互间互不影响;

4、持续性(durability):事务处理的效果能够被永久保存下来。

 

  隔离级别:

1、多线程并发执行可能会产生以下三个问题:

  脏读(dirtyreads):一个事务读取了另一个事务未提交的并行事务写的数据;

  不可重复读(non-repeatablereads):一个事务重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务修改过;

  幻读(phantomread):一个事务重新执行一个查询,返回一套符合条件的行,发现这些行因为最近提交的事务而发生了改变

2、隔离级别

  读未提交(Read uncommitted):未解决

  读已提交 (Readcommitted):已解决:脏读

  可重复读 (Repeatableread):已解决:脏读,不可重复读

  序列化 (Serializble):已解决:脏读,不可重复读,幻读

3、设置隔离级别

  connection.setTransactionlsolation(Connection.事务级别)

  MySql默认为度已提交;

基本操作:

1、connection.setAutCommit(false):关闭事务自动提交

2、connection.commit():手动提交事务

3、connection.rollback():事务回滚

补:撤销事务中的部分操作

SavePoint sp = connection.setSavepoint();:设置事务回滚点

connection.rollback(sp);

connection.commit();:最后不要忘了提交事务,否则前面需要提交保存的操作也将不会保存到数据库中

     总之,事务就是为了保证我们操作的一致性,完整性,一些列操作中,没有异常发生,我们就看可以commit提交事务,只要有一处发生异常,那么就需要使用rollback回滚草错,本篇更注重理解,理解好事务的核心,在该使用的地方能够正确的使用事务~

以上是 持久层框架JDBC篇(2) 的全部内容, 来源链接: utcz.com/z/511964.html

回到顶部