- 浏览: 1011290 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
如果DBMS支持事务处理,它必须有某种途径来管理两个事务同时对一个数据库进行操作时可能发生的冲突。用户可指定事务隔离级别,以指明DBMS应该花多大精力来解决潜在冲突。例如,当事务更改了某个值而第二个事务却在该更改被提交或还原前读取该值时该怎么办。 假设第一个事务被还原后,第二个事务所读取的更改值将是无效的,那么是否可允许这种冲突?JDBC用户可用以下代码来指示DBMS允许在值被提交前读取该值("dirty读取"),其中con是当前连接: 事务隔离级别越高,为避免冲突所花的精力也就越多。Connection接口定义了五级,其中最低级别指定了根本就不支持事务,而最高级别则指定当事务在对某个数据库进行操作时,任何其它事务不得对那个事务正在读取的数据进行任何更改。通常,隔离级别越高,应用程序执行的速度也就越慢(由于用于锁定的资源耗费增加了,而用户间的并发操作减少了)。在决定采用什么隔离级别时,开发人员必须在性能需求和数据一致性需求之间进行权衡。当然,实际所能支持的级别取决于所涉及的DBMS的功能。 当创建Connection对象时,其事务隔离级别取决于驱动程序,但通常是所涉及的数据库的缺省值。用户可通过调用setIsolationLevel方法来更改事务隔离级别。新的级别将在该连接过程的剩余时间内生效。要想只改变一个事务的事务隔离级别,必须在该事务开始前进行设置,并在该事务结束后进行复位。我们不提倡在事务的中途对事务隔离级别进行更改,因为这将立即触发commit方法的调用,使在此之前所作的任何更改变成永久性的。 JDBC的数据隔离级别设置: TRANSACTION_READ_UNCOMMITTED 说明在提交前一个事务可以看到另一个事务的变化。这样脏读、不可重复的读和虚读都是允许的。 TRANSACTION_READ_COMMITTED 说明读取未提交的数据是不允许的。这个级别仍然允许不可重复的读和虚读产生。 TRANSACTION_REPEATABLE_READ 说明事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现。 TRANSACTION_SERIALIZABLE 是最高的事务级别,它防止脏读、不可重复的读和虚读。
con.setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED);
JDBC 数据库隔离级别 数据访问情况
TRANSACTION_READ_UNCOMMITTED ur 就是俗称“脏读”(dirty read),在没有提交数据时能够读到已经更新的数据
TRANSACTION_READ_COMMITTED cs 在一个事务中进行查询时,允许读取提交前的数据,数据提交后,当前查询就可以读取到数据。update数据时候并不锁住表
TRANSACTION_REPEATABLE_READ rs 在一个事务中进行查询时,不允许读取其他事务update的数据,允许读取到其他事务提交的新增数据
TRANSACTION_SERIALIZABLE rr 在一个事务中进行查询时,不允许任何对这个查询表的数据修改。
JDBC事务隔离级别
为了解决与“多个线程请求相同数据”相关的问题,事务之间用锁相互隔开。多数主流的数据库支持不同类型的锁;因此,JDBC API 支持不同类型的事务,它们由 Connection 对象指派或确定。在 JDBC API 中可以获得下列事务级别:
TRANSACTION_NONE 说明不支持事务。
为了在性能与一致性之间寻求平衡才出现了上面的几种级别。事务保护的级别越高,性能损失就越大。
假定您的数据库和 JDBC 驱动程序支持这个特性,则给定一个 Connection 对象,您可以明确地设置想要的事务级别:
conn.setTransactionLevel(TRANSACTION_SERIALIZABLE) ;
可以通过下面的方法确定当前事务的级别:
int level = conn.getTransactionIsolation();
if(level == Connection.TRANSACTION_NONE)
System.out.println("TRANSACTION_NONE");
else if(level == Connection.TRANSACTION_READ_UNCOMMITTED)
System.out.println("TRANSACTION_READ_UNCOMMITTED");
else if(level == Connection.TRANSACTION_READ_COMMITTED)
System.out.println("TRANSACTION_READ_COMMITTED");
else if(level == Connection.TRANSACTION_REPEATABLE_READ)
System.out.println("TRANSACTION_REPEATABLE_READ");
else if(level == Connection.TRANSACTION_SERIALIZABLE)
System.out.println("TRANSACTION_SERIALIZABLE");
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/applehoney/archive/2008/04/09/2270732.aspx
发表评论
-
VS2010 C++下编译调试MongoDB源码[转]
2011-12-17 00:48 1352考虑到mongodb使用了boost库源码,参考mongodb ... -
mysql 批量update
2011-05-25 17:56 2931我们都知道在MySQL中批量insert的速度会比一条条ins ... -
MySQL查询及删除重复记录的方法
2011-05-06 18:43 1165查询及删除重复记录的方法(一)1、查找表中多余的重复记录, ... -
MYSQL删除重复记录(此处有正解)
2011-05-06 14:11 949有关mysql删除重复记录的方法,我在网上看到很多文章,很多是 ... -
Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布【转】
2011-05-06 01:14 858文章关键字:Java 嵌入 ... -
Java开源数据库、Java嵌入式数据库、Java内存数据库 第一部分
2011-05-05 20:33 2178Java免费开源数据库、Java 嵌入式数据库、Java ... -
Java开源数据库、Java嵌入式数据库、Java内存数据库 第二部分
2011-05-05 20:32 1611Apache Xindice Apache Xin ... -
Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布
2011-05-05 20:32 839[转]下载地址(这些小程序依例丢在code.google上 ... -
轻松掌握MySQL数据库锁机制的相关原理
2011-03-29 19:40 880《轻松掌握MySQL数据库 ... -
MySQL错误_中文参照列表
2011-02-15 20:26 729MySQL错误_中文参照列表 1005:创建表失败 ... -
mysql 的最大连接
2011-02-15 20:25 748mysql 的最大连接 系统不能连接数据库,关键要看两个数据 ... -
查询及删除重复记录的方法 (一) 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people whe
2011-02-15 20:23 1386一个MYSQL多值查询的存储过程 DELIMITER $$ ... -
MySQL查询及删除重复记录的方法
2011-02-15 20:22 919MySQL查询及删除重复记录的方法 查询及删除重复记录的方法 ... -
引用 [原创]数据库事务
2011-02-12 23:05 908引用 [原创]数据库事务 数据库事务 200 ... -
引用 [转]转一个关于优化sql的文章
2011-02-12 23:04 756引用 [转]转一个关于优化sql的文章 数据 ... -
jdbc查看数据库事务隔离级别
2011-02-12 23:01 1557jdbc查看数据库事务隔离级别 数据库事务 ... -
引用 数据库范式详细解释
2011-02-12 22:59 1149引用 数据库范式详细解释 数据库及设计 20 ... -
数据库设计的三范式
2011-02-12 22:58 1045数据库设计的三范式 数据库及设计 2009- ...
相关推荐
**JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...
- 当设置事务隔离级别为 `TRANSACTION_READ_UNCOMMITTED` 时,虽然提高了并发性能,但也可能会出现脏读等问题。 - 当设置事务隔离级别为 `TRANSACTION_SERIALIZABLE` 时,虽然完全避免了并发问题,但也可能会出现...
在MySQL中查询当前的事务隔离级别可以通过以下命令实现: ```sql SELECT @@tx_isolation; ``` MySQL数据库默认的事务隔离级别是 `REPEATABLE READ`。 #### 结论 综上所述,事务及其四大特性对于确保数据库操作的...
在JDBC中,可以通过设置Connection对象的事务隔离级别来控制并发行为。例如,使用`setTransactionIsolation()`方法可以设置为`Connection.TRANSACTION_READ_COMMITTED`来实现读已提交的隔离级别,从而避免脏读。同时...
2. **设置事务隔离级别**:使用Connection对象的setTransactionIsolation()方法。 3. **开始事务**:调用Connection对象的setAutoCommit(false),这会关闭自动提交模式,从而开始手动事务控制。 4. **执行SQL操作**...
“JDBC事务管理项目”涵盖了如何在Java应用中利用JDBC进行事务控制,包括开启手动事务、提交、回滚以及设置事务隔离级别等。理解并掌握这些知识对于开发健壮的数据库应用至关重要,能够确保数据的完整性和一致性。
3. **Transaction隔离级别**:事务有四种隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每个级别决定了一个事务在执行时能看到...
关键类如`TransactionDefinition`定义了事务属性,如隔离级别、超时时间等;`TransactionStatus`接口则表示当前事务的状态。在事务管理器内部,Spring会根据这些信息创建并维护事务。 **工具使用**:Spring提供了...
事务隔离级别 事务的隔离级别是指事务在执行过程中对资源的访问权限。Spring的事务管理机制提供了多种隔离级别,包括DEFAULT、NONE、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE等。开发...
4. 选择合适的JDBC事务隔离级别,以平衡并发性和一致性需求。 总的来说,"JDBC驱动程序SQLServer2000.rar"提供了一个重要的工具,使Java开发者能够充分利用SQL Server 2000的功能,并通过Java应用程序进行数据操作...
3. **JDBC事务隔离级别**:了解并根据业务需求设置合适的事务隔离级别,如READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。 4. **异常处理**:使用try-with-resources语法确保资源的正确关闭,...
接下来,我们将深入探讨`@Transactional`注解以及Spring中的事务隔离级别。 1. **什么是事务** 事务是数据库操作的基本单元,它确保一组数据库操作要么全部成功,要么全部失败。事务的存在是为了维护数据库的一致...
4. **事务隔离级别选择**:Oracle数据库支持四种事务隔离级别:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。根据并发需求选择合适的隔离级别...
在Java中,JDBC提供了四种事务隔离级别:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每个级别的选择都直接影响到并发控制和数据一致性。...
在描述中提到的博客链接(由于实际链接无法访问,这里无法提供具体细节),可能详细讲述了如何在Spring中配置和使用JDBC事务,包括示例代码和常见问题解决。在实际项目中,理解并正确应用这些事务管理机制对于保证...
Java中,JDBC提供了四种事务隔离级别: 1. 读未提交(Read Uncommitted):允许读取尚未提交的数据,可能导致脏读。 2. 读已提交(Read Committed):每次读取的都是事务提交后的最新数据,防止了脏读,但可能有不...
Spring JDBC提供了多种事务隔离级别,例如ISOLATION_DEFAULT、ISOLATION_READ_UNCOMMITTED、ISOLATION_READ_COMMITTED、ISOLATION_REPEATABLE_READ、ISOLATION_SERIALIZABLE等。 rollbackFor 属性 rollbackFor ...
`isolation`设置事务隔离级别;`rollbackFor`指定哪些异常应导致回滚;`noRollbackFor`指明哪些异常不应导致回滚。 - **使用示例**:在Service层的方法上添加`@Transactional`,表示该方法内部的操作需在一个事务中...
JDBC支持四种事务隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每种级别都有不同的并发控制策略,以防止脏读、不可重复读和幻...