- 浏览: 270729 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
10.1.2 事务和事务边界
http://book.51cto.com 2009-06-16 22:16 牛新庄 清华大学出版社 我要评论(0)
* 摘要:《循序渐进DB2-系统管理、运行维护与应用案例》第10章锁和并发,本章首先介绍了通用的事务概念,并指出DB2在用户读取、写入数据时的加锁策略、锁模式、兼容性等。本章还介绍了在并发控制中常碰到的4种数据异常现象,同时讲述了 DB2如何使用锁克服这些问题的。本节为大家介绍事务和事务边界。
* 标签:DB2 系统管理 循序渐进DB2-系统管理、运行维护与应用案例
*
10.1.2 事务和事务边界
事务(也称为工作单元)是一种将一个或多个SQL 操作组合成一个单元的可恢复操作序列,通常位于应用程序进程中。事务的启动和终止定义了数据库的一致性:要么将一个事务中执行的所有SQL操作的结果都应用于数据库(提交),要么完全取消并丢弃已执行的所有SQL操作的结果(回滚)。
运行嵌入式SQL应用程序或脚本,在可执行SQL语句第一次执行时(在建立与数据库的连接之后或在现有事务终止之后),事务就会自动启动。在启动事务之后,必须由启动事务的用户或应用程序显式地终止它,除非使用了称为自动提交(automatic commit)的过程(在这种情况下,发出的每个单独的SQL语句被看做单个事务,它一执行就被隐式地提交了)。
在大多数情况下,通过执行COMMIT或ROLLBACK语句来终止事务。当执行COMMIT语句时,自从事务启动以来对数据库所做的一切更改就成为永久性的了-- 即它们被写到磁盘。当执行ROLLBACK语句时,自从事务启动以来对数据库所做的一切更改都被撤销,并且数据库返回到事务开始之前所处的状态。不管是哪种情况,数据库在事务完成时都保证能回到一致状态。
一定要注意一点:虽然事务通过确保对数据的更改仅在事务被成功提交之后才成为永久性的,从而提供了一般的数据库一致性,但还是须要用户或应用程序来确保每个事务中执行的SQL操作序列始终会导致一致的数据库。
1. COMMIT和ROLLBACK操作的效果
正如前面提到的,通常通过执行COMMIT或ROLLBACKSQL语句来终止事务。为了理解这些语句如何工作,我们看下面的示例。
如果按所示的顺序执行下列SQL语句(由3个事务组成的简单工作负载):
1. CONNECT TO SAMPLE
2. CREATE TABLE DEPARTMENT (DEPT_ID INTEGER NOT NULL, DEPT_NAME VARCHAR(20))
3. INSERT INTO DEPARTMENT VALUES(100, 'PAYROLL')
4. INSERT INTO DEPARTMENT VALUES(200, 'ACCOUNTING')
5. COMMIT
6.
7. INSERT INTO DEPARTMENT VALUES(300, 'SALES')
8. ROLLBACK
9.
10. INSERT INTO DEPARTMENT VALUES(500, 'MARKETING')
11. COMMIT
这将创建一个名为DEPARTMENT的表,它的结构如表10-1所示。
表10-1 表DEPARTMENT的结构
DEPT_ID
DEPT_NAME
100
PAYROLL
200
ACCOUNTING
500
MARKETING
当执行第一个COMMIT语句时,创建名为DEPARTMENT的表并向表中插入两条记录,这两个操作都会变成永久性的。当执行到ROLLBACK语句时,删除插入DEPARTMENT表中的第三条记录,该表返回到执行插入�%
【责任编辑:云霞 TEL:(010)68476606】
回书目 上一节 下一节
上一篇: 10.1.1 数据一致性 下一篇: 10.1.3 锁的概念(1)
* 相关文章
* ·15.10 SQL0805和SQL0818错误
* ·15.9.12 对重要敏感数据加密
* ·15.9.11 使用LBAC控制数据访问
* ·15.9.10 使用存储过程控制数据访问
* ·15.9.9 使用视图控制数据访问
* 频道热门
* ·Python 3程序开发指南(第二版)
* ·Android开发进阶必读——评《精通Android 2》
* ·谈程序员的思维训练——评《程序员的思维修炼》
* ·6.2.4 创建完全整合的数据类型
* ·4.1 控制结构
http://book.51cto.com 2009-06-16 22:16 牛新庄 清华大学出版社 我要评论(0)
* 摘要:《循序渐进DB2-系统管理、运行维护与应用案例》第10章锁和并发,本章首先介绍了通用的事务概念,并指出DB2在用户读取、写入数据时的加锁策略、锁模式、兼容性等。本章还介绍了在并发控制中常碰到的4种数据异常现象,同时讲述了 DB2如何使用锁克服这些问题的。本节为大家介绍事务和事务边界。
* 标签:DB2 系统管理 循序渐进DB2-系统管理、运行维护与应用案例
*
10.1.2 事务和事务边界
事务(也称为工作单元)是一种将一个或多个SQL 操作组合成一个单元的可恢复操作序列,通常位于应用程序进程中。事务的启动和终止定义了数据库的一致性:要么将一个事务中执行的所有SQL操作的结果都应用于数据库(提交),要么完全取消并丢弃已执行的所有SQL操作的结果(回滚)。
运行嵌入式SQL应用程序或脚本,在可执行SQL语句第一次执行时(在建立与数据库的连接之后或在现有事务终止之后),事务就会自动启动。在启动事务之后,必须由启动事务的用户或应用程序显式地终止它,除非使用了称为自动提交(automatic commit)的过程(在这种情况下,发出的每个单独的SQL语句被看做单个事务,它一执行就被隐式地提交了)。
在大多数情况下,通过执行COMMIT或ROLLBACK语句来终止事务。当执行COMMIT语句时,自从事务启动以来对数据库所做的一切更改就成为永久性的了-- 即它们被写到磁盘。当执行ROLLBACK语句时,自从事务启动以来对数据库所做的一切更改都被撤销,并且数据库返回到事务开始之前所处的状态。不管是哪种情况,数据库在事务完成时都保证能回到一致状态。
一定要注意一点:虽然事务通过确保对数据的更改仅在事务被成功提交之后才成为永久性的,从而提供了一般的数据库一致性,但还是须要用户或应用程序来确保每个事务中执行的SQL操作序列始终会导致一致的数据库。
1. COMMIT和ROLLBACK操作的效果
正如前面提到的,通常通过执行COMMIT或ROLLBACKSQL语句来终止事务。为了理解这些语句如何工作,我们看下面的示例。
如果按所示的顺序执行下列SQL语句(由3个事务组成的简单工作负载):
1. CONNECT TO SAMPLE
2. CREATE TABLE DEPARTMENT (DEPT_ID INTEGER NOT NULL, DEPT_NAME VARCHAR(20))
3. INSERT INTO DEPARTMENT VALUES(100, 'PAYROLL')
4. INSERT INTO DEPARTMENT VALUES(200, 'ACCOUNTING')
5. COMMIT
6.
7. INSERT INTO DEPARTMENT VALUES(300, 'SALES')
8. ROLLBACK
9.
10. INSERT INTO DEPARTMENT VALUES(500, 'MARKETING')
11. COMMIT
这将创建一个名为DEPARTMENT的表,它的结构如表10-1所示。
表10-1 表DEPARTMENT的结构
DEPT_ID
DEPT_NAME
100
PAYROLL
200
ACCOUNTING
500
MARKETING
当执行第一个COMMIT语句时,创建名为DEPARTMENT的表并向表中插入两条记录,这两个操作都会变成永久性的。当执行到ROLLBACK语句时,删除插入DEPARTMENT表中的第三条记录,该表返回到执行插入�%
【责任编辑:云霞 TEL:(010)68476606】
回书目 上一节 下一节
上一篇: 10.1.1 数据一致性 下一篇: 10.1.3 锁的概念(1)
* 相关文章
* ·15.10 SQL0805和SQL0818错误
* ·15.9.12 对重要敏感数据加密
* ·15.9.11 使用LBAC控制数据访问
* ·15.9.10 使用存储过程控制数据访问
* ·15.9.9 使用视图控制数据访问
* 频道热门
* ·Python 3程序开发指南(第二版)
* ·Android开发进阶必读——评《精通Android 2》
* ·谈程序员的思维训练——评《程序员的思维修炼》
* ·6.2.4 创建完全整合的数据类型
* ·4.1 控制结构
发表评论
-
如何使用hibernate
2012-05-24 19:21 0一、选择Hibernate还是iBATIS都有它的道理: H ... -
关于hibernate自动建表和主键的数据类型的关系
2012-02-27 16:18 1145要想让hibernate自动建表, 1、除了 <prop ... -
用Spring+Hibernate链接时,在增删改时会报错: Write operations are not allowed in read-only mod
2011-09-11 19:53 888用Spring+Hibernate链接时,在增删改时会报错: ... -
[转]hibernate延迟加载
2011-04-26 11:41 5692007-12-01 [转]hibernate延迟 ... -
Hibernate利用XDoclet自动生成配置文件
2011-04-18 18:34 805Hibernate利用XDoclet自动生 ... -
如何利用 myeclipse 生成Hibernate 配置文件
2011-04-18 18:13 1249在hibernate中,每个数据表对应的其实是一个实体类,每个 ... -
Hibernate Synchronizer是一个Eclipse插件,可以自动生成*.hbm文件、持久化类和DAOs
2011-04-18 18:00 1897Hibernate Synchronizer是一个Eclips ... -
Hibernate auto produce
2011-04-18 17:52 984Hibernate 中需要class和mapp ... -
使用动态代理实现用AOP对数据库进行操作
2011-04-12 14:11 949使用动态代理实现用AOP对数据库进行操作 2008-03-14 ... -
Hibernate中cascade与inverse属性详解
2011-04-01 16:20 942Hibernate中cascade与inverse属性详解 ... -
事务传播行为种类
2011-03-31 15:31 824事务传播行为种类 Spring在TransactionDef ... -
Hibernate saveOrUpdate分析
2011-03-31 15:30 863* Hibernate s ... -
使用Spring AOP代理方式实现声明式事务的原理
2011-03-31 15:28 1208使用Spring AOP代理方式实 ... -
Hibernate Session缓存概述
2011-03-31 15:27 1010* Hibernate Session缓存 ... -
解说Hibernate的工作原理实例
2011-03-31 15:26 875* 解说Hibernate的工作原理实例 ... -
简述Hibernate配置连接池
2011-03-31 15:25 845* 简述Hiber ... -
简单解析J2EE数据持久层设计
2011-03-31 15:24 983* 简单解 ... -
浅析Hibernate Callback接口
2011-03-31 15:23 896* 浅析Hibernate Callbac ... -
概述Hibernate equals()方法
2011-03-31 15:22 771* 概述Hiber ... -
概括潜在的Hibernate性能问题
2011-03-31 15:21 952* 概括潜在的Hibernate性能问题 ...
相关推荐
- **异常处理**:确保事务边界内的异常被正确捕获和处理,否则可能导致事务未能按预期回滚。 - **并发控制**:在多线程环境下,需要注意事务之间的隔离级别设置,以避免死锁或其他并发问题。 - **性能考量**:过度...
容器根据事务的边界(如方法调用)自动开始和结束事务,减轻了开发者的负担。 对于JDBC和JTA事务,开发者需要显式地调用`commit()`或`rollback()`来控制事务的结束。而在容器事务中,事务的控制权交给了容器,...
总结来说,Spring 框架的事务管理与 Java 原生的事务管理相比,具有更高的抽象层次和更好的可配置性,使得事务管理更加简单和高效。通过 Spring 的 IOC 容器和 AOP 机制,开发者可以更专注于业务逻辑的实现,而将...
在Spring框架中,可以通过@Transactional注解在方法级别声明事务边界,由Spring容器自动管理事务的生命周期。这种方式降低了事务管理的复杂性,提高了代码的可维护性。 4. **事务设计模式**:这里主要涉及两种模式...
2. **Spring框架的声明式事务管理**:Spring通过AOP(面向切面编程)实现了对事务的声明式管理,开发人员只需在配置文件或注解中声明事务边界,而无需手动编写事务管理代码。Spring支持编程式事务管理和声明式事务...
2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或者使用`@Transactional`注解来定义事务边界,使得事务管理与业务逻辑分离,降低了代码的耦合度。`@Transactional`注解可以应用于方法级别,表示该...
这些特性使得在处理数据库操作时,能够更好地控制事务的边界和行为,从而确保数据的一致性和完整性。 首先,我们来看一下事务的传播属性(Propagation)。这主要决定了在一个事务方法调用另一个事务方法时,如何...
显式事务则需要明确的BEGIN TRANSACTION、COMMIT TRANSACTION和ROLLBACK TRANSACTION语句来界定事务的边界,提供更精细的控制。 总之,事务和锁是数据库管理系统的核心组件,它们确保了数据的正确性和一致性,同时...
声明式事务管理则依赖于Spring等框架,通过@Transactional注解来配置事务边界。 接着,我们讨论并发控制。在多用户环境下,同时访问同一数据可能会引发并发问题,如脏读、不可重复读和幻读。Hibernate提供了一些...
本示例“spring 事务传播 demo”将聚焦于Spring的事务传播行为,这是在多个方法调用中控制事务边界的关键概念。下面我们将详细讨论相关知识点。 首先,事务传播行为是指当一个被@Transactional注解的方法被另一个@...
声明式事务管理通过配置元数据(如XML或注解)来控制事务边界,而编程式事务管理则通过TransactionTemplate或PlatformTransactionManager接口直接在代码中管理事务。 在描述中提到的博客文章中,作者可能详细讲解了...
总结一下,Spring事务管理提供了XML配置和注解两种方式,使得开发者能够灵活地控制事务的边界和行为。XML方式适合于传统应用,而注解方式则更加简洁,易于理解和维护。无论选择哪种方式,Spring事务管理都能帮助我们...
1. **基于XML的声明式事务管理**: 在Spring的配置文件中,我们可以通过`<tx:advice>`、`<aop:config>`等元素定义事务的边界,指定哪些方法需要在事务中运行。 2. **基于注解的声明式事务管理**: 使用@Transactional...
声明式事务管理则是通过配置或注解来声明事务边界,更加简洁且易于维护。 1. **编程式事务管理**:使用`PlatformTransactionManager`接口和`TransactionDefinition`接口进行事务管理。例如,使用`...
开发者可以在代码中调用 `TransactionTemplate` 或直接使用 `PlatformTransactionManager` 的方法来管理事务边界。这种方式灵活性较高,适合处理复杂的事务逻辑,但可能导致代码的事务管理部分过于繁琐,不易维护。 ...
7. **注意事务边界**:事务通常应用于单个方法,如果一个事务方法内部调用了另一个事务方法,可能会导致事务边界混乱。这时可以调整事务传播行为或考虑是否需要分开处理。 8. **事务嵌套**:Spring支持事务嵌套,当...
而声明式事务管理则是在配置文件或者注解中声明事务边界,将事务管理与业务逻辑分离,使得代码更清晰。 ### 2. 基于注解的事务管理 #### 2.1 `@Transactional` Spring的`@Transactional`注解是声明式事务管理的...