1、事务是指一组逻辑操作单元,使数据从一种状态转换到另一种状态。

2、事务的四个属性:

--1)原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生要么都不发生;

--2)一致性:事务必须是数据库从一个一致性状态变换到另外一个一致性状态

--3)隔离性:事务的执行不能被其他事务干扰,即一个事务内的操作及使用的数据对并发的其他事物是隔离的,并发执行的各个事务之间不能相互干扰;

--4)持久性:事务一旦被提交,他对数据库中数据的改变是永久性的。

3、使用JDBC操作数据库时,为了防止程序出现异常导致有些sql语句被执行而另外一些sql语句未执行,违反一致性,就需要使用事务来操作数据库,一旦发生异常,但是若没有提交(commit),则数据库仍可回滚到异常发生之前的状态;

4、使用事务时必须保证所有操作使用同一个连接(Connection),同时由于JDBC操作数据库时会为每一次操作自动提交(commit),因此要想正常使用事务,在操作之前需要使用Connection的setAutoCommit(false)方法,来关闭自动提交,当操作完之后再使用Connection的commit()方法手动提交;若出现异常,则可以使用其rollback()方法回滚事务。

5、编程实例:

public void testTransaction(){
DAO dao = new DAO();
Connection conn = null;
try{
//获取连接
conn = JDBCUtils.getConnection();
//关闭自动提交
conn.setAutoCommit(false);
//进行第一次数据操作
String sql1 = "UPDATE accounts SET SALARY = SALARY - 500 WHERE id = 1";
dao.update(conn, sql1); //模拟异常发生
int a = 10 / 0; //进行第二次数据操作
String sql2 = "UPDATE accounts SET SALARY = SALARY + 500 WHERE id = 2";
dao.update(conn, sql2);
//提交事务
conn.commit();
}catch(Exception e){
//若出现异常,则回滚事务
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
if(conn != null){
//关闭数据库连接
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

6、数据库的隔离级别:对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题:

--读脏数据:对于两个事务T1,T2,T1读取了已经被T2更新但没有提交的字段之后,若T2回滚,T1读取的内容就是无效的;

--不可重复读:对于两个事务T1,T2,T1读取了一个字段,然后T2更新了该字段之后,T1再次读取该字段时值与第一次读取不同;

--幻读:对于两个事务T1,T2,T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行之后,如果T1再次读取同一个表,就会读取多出的几行。

7、为了防止出现上面的问题,数据库系统必须具有隔离并发运行各个事务的能力。使它们不会相互影响,避免各种并发问题;

8、一个事务与其他事务隔离的程度称为隔离级别。数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性就越好,但并发性越弱;

9、四种隔离级别:

--1)READ UNCOMMITTED:读未提交数据

--2)READ COMMITED:读已提交数据

--3)REPEATABLE READ:可重复读

--4)SERIALIZABLE:串行化

--Oracle只支持1)、4)两种级别,默认为1)级别

10、在JDBC中可以使用Connection的setTransactionIsolation(int level)方法来设置隔离级别。其参数有Connection.TRANSACTION_READ_UNCOMMITTED、Connection.TRANSACTION_READ_COMMITED、Connection.TRANSACTION_REPEATABLE_READ、Connection.TRANSACTION_SERIALIZABLE和Connection.TRANSACTION_NONE五种。

JDBC--处理事务的更多相关文章

  1. Spring总结——AOP、JDBC和事务的总结

    1.上一次总结了 Spring 的核心三大组件(Core,Beans,Context),今天总结的 AOP.JDBC和事务都可以看成是核心三大组件的应用. 其中 Spring 的事务管理又以 AOP ...

  2. 【JDBC】事务的使用

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html 关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重  事务 ...

  3. MySql事务及JDBC对事务的使用

    一 .事务的几个重要特性 1. 原子性 事务内的每个内容不可分割,是一个统一的整体.或同时进行或同时消亡. 2.一致性 事务执行前和事务执行后,状态都是统一的.如A转B 100元,A和B数据总额度没有 ...

  4. JDBC 之 事务

    1.概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功. 2.数据库开启事务的命令dtl: Start transaction开启事务 Rollback回滚事务(撤销) ...

  5. JDBC之事务隔离级别以及ACID特性

    JDBC之事务隔离级别以及ACID特性 事务隔离级别: 1.更新遗失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了.这是因为系统没有 ...

  6. 事务之使用JDBC进行事务的操作2

    本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...

  7. JDBC控制事务

    概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并 ...

  8. JDBC进行事务管理

    JDBC进行事务管理 事务的四个特征:原子性 : 是指事务中包含的操作都被看做是一个逻辑单元一致性: 开始前和结束后数据库都处于一致性状态隔离性: 对数据库修改的多个事务是彼此隔离的持久性 事务完成之 ...

  9. JDBC处理事务

    一.什么是事务? 在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 二.事务是必须满足4个条件(AC ...

  10. Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等...

    1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令 •start transaction 开启事务 •Rollback  回滚事务 •Commit ...

随机推荐

  1. 「题解」「2014 NOI模拟赛 Day7」冒泡排序

    目录 题目 考场思考 正解 题目勾起了我对我蒟蒻时代的回忆,虽然我现在也蒟蒻 题目 点这里 可能链接会挂,在网上搜题目就有. 毕竟 \(BZOJ\) 有点老了... 考场思考 本来以为十分友善的一道题 ...

  2. python 编程的 Style Guide

    Python 的作者既优雅又高冷又 鬼毛的 再 PEP8 里规定了 Python 程序编写规范.(风格和格式) 一.基本观念 1.可读性之上,代码被读的次数肯定比被写的次数多.因此作者十分重视代码的可 ...

  3. 修改oracle数据库用户密码的方法

    WIN+R打开运行窗口,输入cmd进入命令行: 输入sqlplus ,输入用户名,输入口令(如果是超级管理员SYS的话需在口令之后加上as sysdba)进入sql命令行:    连接成功后,输入“s ...

  4. Python笔记⑤爬虫

    爬虫的前奏 # 爬虫前奏 # 明确目的 # 找到数据对应的网页 # 分析网页的结果找到数据所在的标签位置 # 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML # 用正则表达式 ...

  5. CPU的态

    CPU是OS最基本的硬件. cpu的态(mode): 1.mode展示CPU的工作状态 2.mode用来给对资源和指令权限的描述 分类: 1.kernel mode(核态): 权限最高 OS内核/管理 ...

  6. SQL Server 消息队列,处理程序错误

    SQL Server 消息队列,处理程序错误存储过程书写错误,会导致消息处理队列停用,此时只需将错误修正,再将队列处理状态启用即可. ALTER QUEUE OrdBomPurQty_ReivceQu ...

  7. 「JSOI2015」最大公约数

    「JSOI2015」最大公约数 传送门 考虑先枚举区间左端点, 然后我们会发现所有可能的区间虽然有 \(O(n)\) 个,但是本质不同的区间 \(\gcd\) 只有 \(\log n\) 级别,而且是 ...

  8. OA:办公自动化———笔记一

    oa:办公自动化 1.对公司结构的管理 基础数据管理         部门进行管理     角色进行管理     权限进行管理  员工进行管理   2.流程管理          利用工作流技术对比较 ...

  9. ubuntu---CUDA 安装注意点总结

    安装CUDA前的基础准备: 1.查看内核.gcc版本并记住. 最好 禁止内核更新,以防止以后工作中意外的系统更新使内核自动更新了,与驱动版本不兼容了.   2.禁用 nouveau驱动.   3.多下 ...

  10. MongoDB的分片数据库命令总结

    sh._adminCommand 在admin数据库运行database command ,就像db.runCommand() ,不过可以保证只在 mongos 上运行. sh._checkFullN ...