码迷,mamicode.com
首页 > 数据库 > 详细

JDBC基础学习(四)—数据库事务

时间:2016-04-18 23:47:14      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

一、事务基本认识

1.事务的概述

     为了保证数据库中数据的一致性,数据的操作应当是离散的成组的逻辑单元。当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应当全部视为错误,所有从起始点以后的操作应全部回退到开始状态。

     事务的操作: 先定义开始一个事务,然后对数据做修改操作,这时如果提交(commit),这些数据就永久的保存下来,如果回退(rollback),数据库管理系统就放弃所有的修改而回到开始事务的状态。

 

2.事务的属性

(1)原子性(Atmicity)

     原子性是指事务是一个不可分割的工作单位,事务的操作要么都发生,要么都不发生。

(2)一致性(Consistency)

     事务必须使数据库从一个一致性状态变换到另外一个一致性的状态。

(3)隔离性(Isolation)

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

(4)持久性(Durability)

     持久性是一个事务一旦被提交,它对数据库中的数据改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

 

二、事务在JDBC中的操作

     (1)如果多个操作,每个操作使用的是自己的单独连接,则无法保证事务。

     (2)使用步骤:

         A: 事务开始前,开始事务,即取消自动提交。con.setAutoCommit(false);

         B: 如果事务的操作都成功,就提交事务。con.commit();

         C: 如果出现异常,在Catch块中回滚事务。con.rollback();

	/*
	 * 事务
	 * 1.如果多个操作,每个操作使用的是自己的单独连接,则无法保证事务。
	 * 2.步骤
	 * (1)事务开始前,开始事务,即取消自动提交。
	 *    con.setAutoCommit(false);
	 * (2)如果事务的操作都成功则提交事务
	 *    con.commit();
	 * (3)回滚事务: 如出现异常,在catch块中回滚事务。
	 *    con.rollback();
	 */
	
	@Test
	public void testTx(){
		
		Connection con = null;
		
		try{
			
			//保证连接是唯一的,传入相同的Connnection
			con = JdbcTools.getConnection();
			
			//开始事务:取消默认提交
			con.setAutoCommit(false);
			
			String sql = "update person set salary = salary - 500 where name = ?";
			JdbcTools.update(con,sql,"Tom");
			
			int i = 1 / 0;
			
			String sql2 = "update person set salary = salary + 500 where name = ?";
			JdbcTools.update(con,sql2,"Jerry");
			
			//正常就提交事务
			con.commit();
			
		}catch(Exception e){
			e.printStackTrace();
			
			//出现异常就回滚事务
			try{
				con.rollback();
			}catch(SQLException e1){
				e1.printStackTrace();
			}
		}
		finally{
			JdbcTools.releaseResource(con,null,null);
		}
	}

JDBC基础学习(四)—数据库事务

标签:

原文地址:http://www.cnblogs.com/yangang2013/p/5406152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!