Spring事务管理简介】的更多相关文章

© 版权声明:本文为博主原创文章,转载请注明出处 1.什么是事务 - 事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务特性(ACID) - 1.原子性(Atomicity):指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生 - 2.一致性(Consistemcy):指事务前后数据的完整性必须保持一致 - 3.隔离性(Isolation):指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离 - 4.持久性(…
之前我们说过Spring事务管理中的事务的传播行为的属性.下面我们来说一下它的其他属性. 一.事务的隔离级别 1 .数据库事务并发问题.假设现在有两个事务:Transaction01和Transaction02并发执行. ①脏读 [1]Transaction01将某条记录的AGE值从20修改为30. [2]Transaction02读取了Transaction01更新后的值:30. [3]Transaction01回滚,AGE值恢复到了20. [4]Transaction02读取到的30就是一个…
事务管理简介   Spring 事务管理有两种方式:一种是编程式事务管理,即通过编写代码实现事物管理,包括定义事务的开始,程序正常执行后的事物提交,异常时进行的事务回滚.另一种是基于AOP技术实现的声明式事务管理,其主要思想是将事务管理作为一个"切面"代码单独编写,我们只用关心核心业务逻辑代码,然后通过AOP技术将事务管理的"切面"代码织入到业务类中,声明式事务管理有包括基于AOP方式的事务管理和基于 @Transactional注解方式的事务管理,声明式事务管理极…
一.AOP注解开发 此处需要回忆一遍AOP的概念.简单的来说,AOP就是利用动态代理技术,做到不触动源代码但却扩展了功能.那么就需要一个被扩展的对象和一个“新的功能”,例如说给某类的saveUser方法增加输出日志需求,此时输出日志该事件就是一个“新的功能”.举这个例子的重点只是为了突出,AOP技术需要关注两个方面,一个是接受者,而另一个是输出点.要利用AOP,必然需要将这两个对象做出关联.而所谓AOP注解开发,就是如何将这两个对象建立关系. 当然,以上理解仅仅为个人的话语解读,不具有严谨的用词…
作者:学无先后 达者为先 Spring提供了一流的事务管理.在Spring中可以支持声明式事务和编程式事务. 一  spring简介 1 Spring的事务       事务管理在应用程序中起着至关重要的作用:它是一系列任务的组成工作单元,在这个工作单元中,所有的任务必须同时执行.它们只有二种可能执行结果,要么所有任务全部执行成功,要么所有任务全部执行失败.     Spring中提供了丰富的事务管理功能,它们超过了EJB并且和EJB一样支持声明式事务,重要的是Spring提供了一致的事务管理,…
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库.表名.SQL语句等信息. 在spring中动态变量能够通过注入的形式给予.这样的变成方式适合包装成模板.静态代码构成了模板,而动态变量是需要传入的参数. 二.核心类JdbcTemplate 1.基于模板的设置. 2.完成了资源的创建和释放的工作. 3.简化了我们的JDBC操作. 4.完成了对JDBC…
上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见的选择.  PROPAGATION_SUPPORTS-- 如果当前没有事务,就以非事务方式执行.  PROPAGATION_MANDATORY-- 如果当前没有事务,就抛出异常.  PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起.  PROPAGATION_NO…
在最近做的一个项目里面,涉及到多数据源的操作,比较特殊的是,这多个数据库的表结构完全相同,由于我们使用的ibatis框架作为持久化层,为了防止每一个数据源都配置一套规则,所以重新实现了数据源,根据线程变量中指定的数据库连接名称来获取实际的数据源. 一个简单的实现如下: public class ProxyDataSource implements DataSource { /** 数据源池配置 */ private Map<String, DataSource> dataSourcePoolC…
配置spring事务管理的几种方式(声明式事务) 概要: Spring对编程式事务的支持与EJB有很大的区别.不像EJB和Java事务API(Java Transaction API, JTA)耦合在一起那样,Spring通过回调机制将实际的事务实现从事务性的代码中抽象出来.实际上,Spring对事务的支持甚至不需要JTA的实现.如果你的应用程序只使用一种持久化资源,Spring可以使用持久化本事所提供的事务性支持,这包括了JDBC,Hibernate以及Java持久化API(Java Pers…
Spring抽象的DAO体系兼容多种数据访问技术,它们各有特色,各有千秋.像Hibernate是非常优秀的ORM实现方案,但对底层SQL的控制不太方便:而iBatis则通过模板化技术让你方便地控制SQL,但没有Hibernate那样高的开发效率:自由度最高的当然是直接使用Spring JDBC了,但它也是底层的,灵活的代价是代码的繁复.很难说哪种数据访问技术是最优秀的,只有在某种特定的场景下才能给出答案.所以在一个应用中,往往采用多个数据访问技术:一般是两种,一种采用ORM技术框架,而另一种采用…