04-JDBC学习手册:JDBC中使用transaction(事务)编程和Javabean定义
2017-05-29 21:43
453 查看
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 可以有外观作为显示控制,事件机制。
相关文章推荐
- 20170205JDBC的学习第二天:PreparedStatement的使用、事务(Transaction)的学习
- JDBC学习第三站之使用 Transaction 编程
- JDBC总结05-JDBC 中使用 Transaction 编程(事务编程)
- JDBC中使用事务编程步骤
- JavaBean中使用JDBC方式进行事务处理
- JavaBean中使用JDBC方式进行事务处理
- redis 学习手册之事务 transaction 操作
- Spring学习心得(22)-- spring声明式事务处理(使用jdbc操作数据库)
- hibernate,spring管理事务中(transaction,JDBC connection,Hibernate Session的使用)
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- jsp学习--JavaBean定义和在Jsp中使用JavaBean
- spring jdbc 事务配置----TransactionTemplate使用
- JavaBean中使用JDBC方式进行事务处理
- 学习《OpenCV 2 计算机视觉编程手册》第二章---使用指针遍历图像案例
- JDBC编程之事务的使用教程
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
- JDBC基础学习笔记_04_jdbc事务处理
- JavaBean编程学习--使用JavaBean提高JSP的代码重用性
- JavaBean中使用JDBC方式进行事务处理
- 02-JDBC学习手册:JDBC编程步骤【重点重点】