JDBC中使用 Transaction(事务)编程

1 事务的四大特性

事务是具备以下特征(ACID) 的工作单元:

(1) 原子性

  • 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。
  • 原子操作,也就是不可分割的操作,必须 一起成功一起失败。

(2) 一致性

  • 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。

(3) 分离性

  • 分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。

(4) 持久性

  • 持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS 保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持久性通过数据库备份和恢复来保证。

2 事务处理三步曲

① connection.setAutoCommit(false); // 把自动提交关闭
② 正常的DB操作 // 若有一条 SQL  语句失败了,自动回滚
③ connection.commit() // 主动提交   或 connection.rollback() //主动回滚
完整的代码片段:
try{con.setAutoCommit(false); //step ①  把自动提交关闭Statement stm = con.createStatement();stm.executeUpdate("insert into person(id, name, age) values(520, 'X-Man', 18)");stm.executeUpdate("insert into Person(id, name, age) values(521, 'Super', 19)");//step ②  正常的 DB  操作con.commit(); //step ③  成功主动提交
} catch(SQLException e){try{con.rollback();} catch(Exception e){ e.printStackTrace(); } //step ③  失败则主动回滚
}

3 JDBC 事务及事务隔离级别

JDBC 事务并发产生的问题:

脏读(Dirty Reads ) 一个事务读取了另一个并行事务还未提交的数据。
不可重复读( UnRepeatable Read ) 一个事务再次读取之前的数据时,得到的数据不一致,被另一个已提交的事务修改。
幻读(Phantom Read ) 一个事务重新执行一个查询,返回的记录中包含了因为其它最近提交的事务而产生的新记录。


为了避免以上三种情况的出现,则采用

事务隔离级别:

以 上 的 五 个 事 务 隔 离 级 别 都 是 在 Connection 类 中 定 义 的 静 态 常 量 , 使 用setTransactionIsolation(int level) 方法可以设置事务隔离级别。

比如:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);


二、JavaBean 的定义

1  是一个普通的 Java 类
2  在结构上没有预先的规定,不需要容器,不需要继承类或实现接口
3  要求必须放在包中,要求实现 Serializable 接口
4  要求有一个无参的构造方法.
5  属性的类型必须保持唯一,get 方法返回值必须和 set 方法参数类型一致
6  对每个属性要有对应的 get 和 set 方法。注:隐藏属性可以没有
7  可以有外观作为显示控制,事件机制。

04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义相关推荐

  1. JDBC学习总结 -- JDBC 快速入门 教程

    先感谢前人的劳动成果, 本教程中含有多处指路,请注意筛选. 详细请阅读官方文档:https://docs.oracle.com/javase/tutorial/jdbc/basics/index.ht ...

  2. 02-JDBC学习手册:JDBC编程步骤【重点重点】

    1  注册一个 Driver 注册驱动程序有三种方式: 方式一:Class.forName("oracle.jdbc.driver.OracleDriver"); JAVA 规范中 ...

  3. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  4. mysql和JDBC学习

    1. MySQL 数据库 第一节 数据库简介 1.1 简介 ​ 数据库(DataBase,DB):指长期保存在计算机的存储设备(硬盘)上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合.简单 ...

  5. JSP、Servlet、JDBC学习笔记

    WEB的学习 * 服务器 * 网络的架构(面试题) * C/S client/server 客户端/服务器端 例子:QQ 快播 暴风影音 * 优点:交互性好,服务器压力小. * 缺点:客户端更新了,下 ...

  6. java后端系统学习总结 02_数据库基础学习、jdbc基础学习、er图基础学习、数据库——(完结)

    猿猿正在系统的学习一些计算机知识,和后端技术栈,目前阶段主要在系统学习java.此专栏,为我学习过程中的学习笔记,便于日后复习回顾来看,也很适合新人学习参考. 以下是猿猿对数据库和java深入的第一遍 ...

  7. JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  8. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  9. JDBC 学习笔记(一)—— 基础知识 + 分页技术

    2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" ...

最新文章

  1. SAP MM初阶之ERS功能展示
  2. 宝安区2021年高考成绩查询入口,宝安区2021年初一学位网上预申请系统http:bajjk.sz.edu.cn/visitbagbcyjz...
  3. 详解 Spring 3.0 基于 Annotation 的依赖注入实现--转载
  4. jQuery -- touch事件之滑动判断(左右上下方向)
  5. Boost::Exception提供的各种常用 error_info typedef的预期用途的测试
  6. 新闻发布项目——接口类(BaseDao)
  7. Android的ListFragment和Fragment的使用
  8. 快手上推广一个月要多少钱,快手短视频广告投放一年多少钱
  9. 阿里云服务器运行django项目报错sqlite3版本低以及注意事项
  10. 深度学习头像定位头像分割
  11. 移动互联时代的地方网站转型
  12. C语言之如何求任意一个已知三边的三角形面积
  13. 录音文件转换成文字很难吗?这几个步骤就可以解决烦恼了
  14. python用bbp公式计算圆周率_利用BBP公式来计算Pi圆周率的PHP代码
  15. linux Basic
  16. 书评《HTTP权威指南》
  17. 关于Excel文件导入
  18. 跨域解决方案CORS
  19. 网络攻防实验——MAC泛洪攻击、ARP DOS、ARP中间人
  20. 【Unity】 Spine渲染原理解析与源码解读

热门文章

  1. Apache2配置SSL
  2. 《研磨设计模式》chap15 组合模式(2)改写示例+总结
  3. java元婴期(20)----java进阶(spring(4)---spring aop编程(全自动)AspectJ)
  4. optee HSM的实现
  5. linux script 命令
  6. (57)模拟线程切换
  7. WIN10+MinGW中文输出乱码的解决方法
  8. 常见的钓鱼招式,可千万别入坑哦
  9. 【web安全】Web应用隔离防护之Web弱口令爆破
  10. delphi程序crackme分析1