1:事务的特征:ACID
atomic :原子性:一个事务是一个不可分割的单位
consitency 一致性:事务开始结束之后,数据库完整性约束没有被破坏
约束:PK FK not null check unique
isolaction 隔离性:一个事务的执行,不被其它事务干扰
durable 持久性:数据应该持久保存
2:事务的边界Autocommit
Autocommit :事务的自动的提交:
JDBC默认是自动提交事务,Autocommit=true
默认情况下事务的边界:
对于insert update delete 是在statement执行完
对于select resultSet 关闭
autocommit 手动提交Autocommit=false
只能手动设置事务的边界,也就是手动提交事务
conn.commit();
Autocommit=false,如果不手动提交事务,那么connection 在显示关闭的时候提交了事务
如果没有显示关闭的connection,事务是不会提交,
connection autoCommit 不要默认true的情况,
设置为false,catch异常一定要要rollback
3:事务的隔离级别
问题:
脏读:允许读取到别的事务未提交的数据
不可重复读:同一事务在2此读取一条数据,读取后结果不一致
幻象读:在一个事务中读取别的事务插入进来的数据
oracle 默认支持:read Comitted 和serializable
transaction read uncomitted
可以读取到别的事务未提交的数据
transaction comitted
只能读取到别的事务已经提交数据
transaction repeatable read
在一个事务中多次读取同一条记录结果是重复的
transaction serializable
在一个事务中,读取数据,如果别的事务插入的数据,
每此读取到相同的结果
jdbc 3.0规范中(请自行到www.jcp.org查阅)提到jdbc支持五中事务隔离级别
原文
1. TRANSACTION_NONE — indicates that the driver does not support transactions,which means that it is not a JDBC compliant driver.
2. TRANSACTION_READ_UNCOMMITTED — allows transactions to see uncommittedchanges to the data. This means that dirty reads, nonrepeatable reads, and phantom reads are possible.
3. TRANSACTION_READ_COMMITTED — means that any changes made inside atransaction are not visible outside the transaction until the transaction iscommitted. This prevents dirty reads, but nonrepeatable reads and phantom reads are still possible.
4. TRANSACTION_REPEATABLE_READ — disallows dirty reads and nonrepeatablereads. Phantom read are still possible.
5. TRANSACTION_SERIALIZABLE — specifies that dirty reads, nonrepeatable reads,and phantom reads are prevented.
问题 隔离级别 |
脏读 |
不可重复读 |
幻读 |
未提交读 |
Y |
Y |
Y |
提交读 |
N |
Y |
Y |
可重复读 |
N |
N |
Y |
序列化读 |
N |
N |
N |
4:SavePoint
Savepoint :给事务提供了更细粒度的控制
通过metadata 可以取到dirver是否支持metadata
相关推荐
1、JavaBean中使用JDBC事务处理 在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到...
JDBC事务处理、提交、回滚。
JavaBean中使用JDBC方式进行事务处理方案 有详细的事物处理代码
Sharding-JDBC分布式事务应用
Java(JDBC)事务处理
通过转账案例讲解了三层和事务,以及容易出现问题的关键点
Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚) 1.数据库事务 1.1.介绍 1.2.事务特性(ACID) ...1.4.JDBC事务处理 2.事务提交(代码实现) 3.异常回滚(代码实现) 4.完整源码
利用对JDBC事务进行修改管理
jdbc连接各数据库及事务处理
封装了java使用jdbc对mysql的操作,以及java使用jdbc对mysql的事务处理,对execute、executeUpdate、executeQuery进行了封装,把繁琐的创建数据库连接对象、PreparedStatement对象、结果集对象,打开关闭连接进行了...
自己写的一个java示例 该示例用jdbc与java事务来实现DAO层的各个DAO的各方法之间的事务关联 使上层可以保证各数据访问的原子性 该示例包含了一个方便调用的数据库访问工具类,该工具类实现了调用SQL语句,调用...
(4)、懒事务处理方式,service层使用@Transactional注解的方法或者类只能走默认库(写库) (5)、AOP根据Dao层的方法名来判断读写库的切换,超出判断规则的只能走默认库(写库) 2、sharding-jdbc (1)、实现...
JDBC事务处理的作用对象为Connection, 因此要想控制操作在同一个事务里面, 我们必须要传递Connection, 确保使用的是同一个Connection.
在事务性语句执行过程中,服务器将会进行额外的处理,在服务器执行时多个事务是并行执行的,为了把他们的记录在一起,需要引入事务缓存的概念。在事务完成被提交的时候一同刷新到二进制日志。对于非事务性语句的处理...
JDBC使用MySQL处理大数据+事务控制管理.txt
NULL 博文链接:https://liaoliu51.iteye.com/blog/603826
事务是为解决数据安全操作提出的,事务控制实际上就是...使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。
1、什么是JDBC; 2、理解JDBC原理、知道什么是JDBC驱动;3、知道JDBC的功能;4、掌握JDBC中几个重要类的使用:Connection、Statement、...7、理解数据库事务、JDBC对事务的支持、以及JDBC事务的原理和如何使用JDBC事务。
(4)理解JDBC中实现事务处理的基本方法; (5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法。 (6)初步理解数据访问层的基本设计方法,理解web...
主要介绍了Java事务管理学习之JDBC的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。