事务与JDBC
来源:互联网 发布:合肥唯米淘宝培训 编辑:程序博客网 时间:2024/05/01 00:15
事务与JDBC
什么是事务
事务是指逻辑上的一组操作,组成这组操作的各个单元要不全部成功,要不全部失败!
事务四大特性 (ACID)
* 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
不考虑隔离性会引发的问题:
* 脏读:一个事务读取到另一个事务未提交的数据
不可重复读:在一个事务内读取表中某一行数据,多次读取的结果不同(一个事务读取到另一个事务提交的数据)
例如:一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。虚读(幻读):是指在一个事务内读取到别的事务插入的数据,导致前后读取不一致。(涉及到多条记录, 数量不一致了)
数据库的四种隔离级别
不同的隔离级别,可以避免不同的问题
Serializable:避免所有问题
Repeatable read:可避免脏读、不可重复读的情况发生
Read conmitted:可以避免脏读
Read uncommitted:什么都不能避免
设置数据库事务的隔离级别(mysql): set transaction isolation level xxx
查询当前事务的隔离级别: select @@tx_isolation
MySQL支持全部隔离级别, 且默认为 Repeatable read
Oracle只支持 Serializable和Read conmitted,且默认为Read conmitted
JDBC与事务
使用事务
NT: 当JDBC程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的sql语句。
conn.setAutoCommit(false); // 开启事务
conn.rollBack(); // 回滚事务
conn.commit(); //提交事务
事务回滚点:
数据库默认会回滚到原点, 不过我们一个科设置事务的回滚点。建回滚点前的sql语句会执行,不过在回滚后一定要记得提交事务.
example:
/*....*/ sp = conn.setSavePoint(); /*...*/ finally{ conn.rollback(sp); conn.commit(); }
- JDBC事务与Hibernate事务
- jta 与jdbc事务
- 事务与JDBC
- JDBC与MySql:事务
- Java JDBC事务与JTA分布式事务
- Java JDBC事务与JTA分布式事务
- ThreadLocal 与 jdbc 事务操作
- DBC事务的概念与JDBC事务处理
- hibernate与jdbc事务共享的实现
- JDBC中语句超时与事务
- JDBC中语句超时与事务
- JDBC事务 隔离级别 介绍 与理解
- Hibernate 事务与JDBC 事务同时使用注意事项
- Hibernate事务与JDBC事务同时使用注意事项 (转载)
- JDBC(七)数据库事务与JDBC事务处理
- JDBC-事务
- jdbc事务
- JDBC事务
- win7下“telnet不是内部或外部命令”的解决方案
- JavaScript之对象的遍历
- 在数码管上静态显示键值
- 1312 棋盘问题
- 四元数与欧拉角之间的转换
- 事务与JDBC
- deepin系统下安装rubymine以及各种ruby编辑环境体验
- 内核工作队列workqueue
- JDK 8和jre 8的区别
- JSON的简单使用
- WPF 开始新的征程
- C++服务器的push推送通知的代码,SSL链接
- codeforces 55D D. Beautiful numbers(数位dp+数论)
- Windows下安装Python3的numpy、matplotlib、scipy包