`
Donald_Draper
  • 浏览: 979785 次
社区版块
存档分类
最新评论

MySQL事务

阅读更多
事务基础知识:http://my.oschina.net/jeffli1993/blog/684762
数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释) :http://blog.csdn.net/jiesa/article/details/51317164
1.测试类
public class TestMySQL {
	public static void main(String[] args) {
		String path = Thread.currentThread().getContextClassLoader ().getResource("").toString();
		System.out.println("==========currentThread:"+path);
		TestMySQL tm = new TestMySQL();
		System.out.println("==========File:"+tm.getClass().getResource("").getFile());
		System.out.println("==========Path:"+tm.getClass().getResource("").getPath());
		String jdbcPath = tm.getClass().getResource("").getPath();
		try {
			File pFile = new File(jdbcPath+"jdbc.properties");  
	        FileInputStream   pInStream=null;  
	        try {  
	            pInStream = new FileInputStream(pFile );  
	        } catch (FileNotFoundException e) {  
	            e.printStackTrace();   
	        }  
	        Properties pInfo = new Properties();  
	        try {  
	        	pInfo.load(pInStream );    
	        } catch (IOException e) {  
	            e.printStackTrace();   
	        }  
	        String drive = pInfo.getProperty("driver");
	        String url = pInfo.getProperty("url");
	        String user = pInfo.getProperty("user");
	        String pwd = pInfo.getProperty("pwd");
			Class.forName(drive);
			Connection conn = DriverManager.getConnection(url, user, pwd);
			DatabaseMetaData metaData = conn.getMetaData();
			// 是否支持的事务
			boolean isSupport = metaData.supportsTransactions();
			System.out.println("======isSupportsTransactions:"+isSupport);
			// 是否支持的Connection.TRANSACTION_SERIALIZABLE等级事务
			boolean isSupportLevel = metaData
					.supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE);
			System.out.println("======isSupportLevel:"+isSupportLevel);
			// 获取默认事务
			int defaultIsolation = metaData.getDefaultTransactionIsolation();
			System.out.println("======DefaultTransactionIsolation:"+defaultIsolation);
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();

		}

	}
}

2.控制台输出如下:
==========currentThread:file:/F:/Myeclipse/test/WebRoot/WEB-INF/classes/
==========File:/F:/Myeclipse/test/WebRoot/WEB-INF/classes/com/test/controller/test/
==========Path:/F:/Myeclipse/test/WebRoot/WEB-INF/classes/com/test/controller/test/
======isSupportsTransactions:true
======isSupportLevel:true
======DefaultTransactionIsolation:2
3.从上可以看出Mysql默认支持的事物为:
/**
     * A constant indicating that
     * dirty reads are prevented; non-repeatable reads and phantom
     * reads can occur.  This level only prohibits a transaction
     * from reading a row with uncommitted changes in it.
     */
    int TRANSACTION_READ_COMMITTED   = 2;
可以避免脏数据的发生,但不重读,幻读可能发生。
4.从Connection的源码中,我们可以看到事务等级的定义如下:
 /** 不支持事务
     * A constant indicating that transactions are not supported. 
     */
    int TRANSACTION_NONE	     = 0;

    /**支持事务,脏数据,不重读,幻读可能发生。
     * A constant indicating that
     * dirty reads, non-repeatable reads and phantom reads can occur.
     * This level allows a row changed by one transaction to be read
     * by another transaction before any changes in that row have been
     * committed (a "dirty read").  If any of the changes are rolled back, 
     * the second transaction will have retrieved an invalid row.
     */
    int TRANSACTION_READ_UNCOMMITTED = 1;

    /**支持事务,不重读,幻读可能发生。
     * A constant indicating that
     * dirty reads are prevented; non-repeatable reads and phantom
     * reads can occur.  This level only prohibits a transaction
     * from reading a row with uncommitted changes in it.
     */
    int TRANSACTION_READ_COMMITTED   = 2;

    /**支持事务,幻读可能发生。
     * A constant indicating that
     * dirty reads and non-repeatable reads are prevented; phantom
     * reads can occur.  This level prohibits a transaction from
     * reading a row with uncommitted changes in it, and it also
     * prohibits the situation where one transaction reads a row,
     * a second transaction alters the row, and the first transaction
     * rereads the row, getting different values the second time
     * (a "non-repeatable read").
     */
    int TRANSACTION_REPEATABLE_READ  = 4;

    /**支持事务,脏数据,不重读,幻读不可能发生。
     * A constant indicating that
     * dirty reads, non-repeatable reads and phantom reads are prevented.
     * This level includes the prohibitions in
     * <code>TRANSACTION_REPEATABLE_READ</code> and further prohibits the 
     * situation where one transaction reads all rows that satisfy
     * a <code>WHERE</code> condition, a second transaction inserts a row that
     * satisfies that <code>WHERE</code> condition, and the first transaction
     * rereads for the same condition, retrieving the additional
     * "phantom" row in the second read.
     */
    int TRANSACTION_SERIALIZABLE     = 8;
分享到:
评论

相关推荐

    Mysql事务的隔离性

    ### MySQL事务的隔离性 #### 一、事务与MySQL架构 **事务**是数据库管理系统执行过程中的一系列逻辑操作,这些操作作为一个完整的单元被执行。如果事务内的所有操作都成功完成,则整个事务成功;如果其中一个操作...

    MySQL事务隔离级别

    MySQL事务隔离级别是数据库管理系统中一个非常重要的概念,它关系到数据的一致性和并发性能。在MySQL中,事务被用于确保数据库操作的原子性、一致性、隔离性和持久性(ACID特性)。事务隔离级别主要涉及四个方面:读...

    Mysql事务的基本使用-基本原理及特点ACID

    ### MySQL 事务的基本...通过对MySQL事务的理解和掌握,我们可以更好地利用其强大的功能来提高应用程序的稳定性和可靠性。通过本篇文章的学习,相信读者已经对MySQL事务的基本原理、特点以及使用方法有了全面的认识。

    mysql事务学习资料(PPT+源码)

    在这个"mysql事务学习资料(PPT+源码)"中,你将深入理解MySQL事务的概念、类型、特性和实际应用。 1. **事务概念**:在数据库中,事务是一系列操作的集合,这些操作要么全部成功,要么全部回滚,以保持数据的一致性...

    mysql事务处理用法与实例详解

    ### MySQL事务处理用法与实例详解 #### 一、事务的概念及重要性 在数据库管理中,事务(Transaction)是指一系列作为一个整体的操作序列。这些操作要么全部成功,要么全部失败,不能只执行其中的一部分。事务处理...

    jdbc+spring+mysql事务理解和分析

    以下是对`jdbc+spring+mysql事务理解和分析`的详细说明: 1. **原子性(Atomicity)**:这是事务的基本特性,表示事务中的所有操作要么全部成功,要么全部回滚。如果在事务执行过程中发生错误,数据库会撤销所有已...

    Mysql事务以及锁原理讲解.pdf

    在深入探讨MySQL事务和锁的原理之前,我们首先需要对“事务”的概念有一个基本的理解。事务是一组操作的集合,这些操作要么全部完成,要么全部不做,确保数据库从一种一致性状态转换到另一种一致性状态,而不会留下...

    06-VIP-深入理解Mysql事务隔离级别与锁机制.pdf

    深入理解Mysql事务隔离级别与锁机制 Mysql事务隔离级别与锁机制是数据库系统中非常重要的概念,它们都是为了解决多事务并发问题而设计的。下面我们将深入讲解这些机制,让大家彻底理解数据库内部的执行原理。 事务...

    mySQL事务处理

    关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....

    超高并发下如何对Mysql事务进行优化

    超高并发下如何对Mysql事务进行优化

    一个关于mysql 事务管理的介绍

    MySQL 事务管理是数据库操作的重要组成部分,特别是在处理关键数据和多步骤操作时,确保数据的一致性和完整性至关重要。事务提供了原子性、一致性、隔离性和持久性的保障,这四个特性通常被简称为ACID属性。 原子性...

    MySQL学习笔记:MySQL安装,MySQL数据类型,MySQL事务,MySQL函数

    MySQL 事务是指一组操作的集合,保证了数据库的完整性和一致性。事务可以分为四个阶段:开始事务、执行事务、提交事务、回滚事务。 MySQL 函数 MySQL 函数是指可以在 MySQL 中使用的函数,包括字符串函数、数字...

    Java实现的mysql事务处理操作示例

    "Java实现的mysql事务处理操作示例" 本文主要介绍了Java实现的mysql事务处理操作,结合实例形式较为详细的分析了Java基于JDBC操作mysql数据库实现事务处理的相关概念、操作技巧与注意事项。 事务处理是数据库操作...

    MySQL事务表和非事务表的区别1

    MySQL 事务表与非事务表是数据库管理中的两种基本类型,它们主要的区别在于对数据一致性和安全性提供的保障程度。在MySQL中,这两种类型的表在处理数据操作时有不同的机制。 首先,事务表,如InnoDB存储引擎提供的...

    mysql事务共2页.pdf.zip

    MySQL事务是数据库操作的核心概念,尤其对于保证数据的一致性和完整性至关重要。在MySQL中,事务是一组数据库操作,这些操作被视为一个单元,要么全部成功,要么全部回滚,以确保数据库状态的一致性。本资料“mysql...

    nodejs + mysql 事务处理问题

    nodejs + mysql 事物处理问题 呵呵 看了就知道 记得npm install啊 需要的东西啊 本想免费 苦于没积分 ,需要的的同学,给点分吧

    mysql-事件,触发器,事务-实验七.docx

    MySQL 事件、触发器、事务实验报告 MySQL 事件调度器是 MySQL 中的一种机制,可以根据指定的时间间隔执行特定的 SQL 语句。事件调度器有两个优点:一是可以用于定期统计、清理、检查等操作;二是可以提高数据库的...

Global site tag (gtag.js) - Google Analytics