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

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  可以有外观作为显示控制,事件机制。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值