在Spring中编写事务的介绍
理解事务之前,先讲一个你日常生活中最常干的事:取钱。
比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元。所以,如果一个步骤成功另一个步骤失败对双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,这对双方都是极好的。
事务就是用来解决类似问题的。事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。
在企业级应用程序开发中,事务管理必不可少的技术,用来确保数据的完整性和一致性。
在Spring中编写事务的方式,是使用Spring的TransactionTemplate。就想Spring中的其他模板类一样,TransactionTemplate利用一种回调机制,让用户编写需要在事务中编写的代码。
transactionTemplate.execute(new TransactionCallBack(){ public Object doInTransaction(TransactionStatus ts){ } });
那么,这里的transactionTemplate是从哪里来的呢?它和TransactionManager是什么关系呢?
首先,这个transactionTemplate需要注入到业务bean中。
其次,TransactionTemplate中有一个成员变量,是TransactionManager类型的,也需要自动注入一个TransactionManager。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
在Spring中使用JDBC和JDBC模板的讲解
spring dao层中对jdbc进行了封装,使用模板模式的设计模式,通过ioc被动注入的方式将jdbcTemplate这个模板类注入到数据对象中,进行数据库操作. 我们要在一个类中进行CRUD操作(crud主要被用在描述软件系统中数据库或者持久层的基本操作功能.),首先要将jdbcTemplate这个模板类注入到数据对象类中,然后将DataSource这个类注入到jdbcTemplate,获取数据源. 这样数据对象类就可以通过jdbcTemplate类中的方法进行数据库操作了. 注意:这里需要
-
Spring中的事务隔离级别的介绍
spring事务: 什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 事务特性(4种): 原子性 (atomicity):强调事务的不可分割. 一致性 (consistency):事务的执行的前后数据的完整性保持一致. 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰 持久性(durability) :事务一旦结束,数据就持久到数据库 解决读问题: 设置事务隔离级别(5种) DEFAULT 这是一个PlatfromTran
-
Spring中数据访问对象Data Access Object的介绍
在Spring中,DAO是Data Access Object的简称,即,数据访问对象. 它的名称虽然叫对象,但其实DAO是接口.这个名称很好的描述了DAO在程序中的角色.DAO的作用在于提供一种手段,来读取和写入数据库,他们应该通过接口的方式来提供这种功能,让程序的其他部分可以访问他们,而不必与特定的读取和写入数据库的实现方式进行绑定. 在程序中,与DAO相关的类的关系一般如下图所示. 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们
-
在AOP中Spring生成代理类的两种方式
Java 动态代理.具体有如下四步骤: 通过实现 InvocationHandler 接口创建自己的调用处理器: 通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类: 通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型: 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入. 在AOP中,Spring通过生成代理类,来完成切面的织入. Spring生成代理类有2种方式. 如果目标对象实现的是一个接口,Sprin
-
Spring中配置数据源的几种方式
无论使用什么形式的Spring DAO支持类,都需要配置数据源的引用.Spring提供了多个选项,用于在Spring程序里配置数据库,其中包括: 1,由JDBC驱动程序定义的数据源. 2,由JNDI查询的数据源. 3,连接池的数据源. 在Spring里,我们可以像使用其他Bean一样来配置一个数据源的引用,并且把它装配到其他的类里. 在配置数据源的时候,其实就是配置一个<bean>节点,指定bean的id,指定bean的class,然后,指定bean的属性,比较通用的属性一般会包括driver
-
Spring对事务管理的支持
Spring对事务的支持有两种方式,一是自己编写事务,精确控制事务的边界,二是采用声明事务的方式,使用AOP来完成.无论哪种方式,我们都将使用一个Spring事务管理连接器连接特定平台的事务实现. Spring不直接管理事务,相反,它提供很多可供选择的事务管理器,将事务管理的责任委托给JTA(Java Transaction Interface)或相应的持久性机制所提供的某个特定平台事务实现. Spring提供的常用的事务管理器有DataSourceTransactionManager,Hibe
-
Spring数据访问模板化方法
在读<Spring in Action>一书,读到Spring数据访问模板化的内容时,书中以乘坐飞机拖运行李为例,介绍了模板方法这一设计模式. 在乘坐飞机需要拖运行李时,我们需要需要进行行李登记.然后,将行李交给工作人员,工作人员会对行李进行称重,安全扫描检查,然后通过传送带将行李传送到摆渡车.摆渡车载上行李,将行李拉到飞机.到达目的地后,摆渡车会将行李从飞机上拉到取行李处,然后乘客取走自己的行李. 查看整个过程,这个过程对于所有乘客基本都是相同的.对不同乘客不一样的地方,是登记行李时需要各个
-
在Spring使用iBatis及配置讲解
就像集成JDBC和其他ORM框架一样,Spring也集成了iBatis. 1,配置iBatis客户模板 iBatis的核心是com.ibatis.sqlmap.SqlMapClient接口.SqlMapClient大致相当于Hibernate的Session或JPA的EntityManager,用于执行全部的数据访问操作. Spring解决iBatis会话管理和异常处理问题的方案是SQLMapClientTemplate.SQLMapClientTemplate包裹了一个SqlMapClient
-
Spring中事务传播行为的介绍
传播行为定义关于客户端和被调用方法的事务边界.Spring定义了7种截然不同的传播行为. 1,PROPAGATION_MANDATORY,表示该方法必须运行在一个事务中.如果当前没有事务正在发生,则抛出异常. 2,PROPAGATION_NESTED,表示如果当前有一个事务正在运行当中,则该方法应该运行在一个嵌套事务中.被嵌套的事务可以独立于封装事务进行提交或回滚.如果封装事务不存在,则行为就像PROPAGATION_REQUIRED一样. 3,PROPAGATION_NEVER,表示当前方法不
-
SpringBoot自动配置的实现原理
一.运行原理 Spring Boot的运行是由注解@EnableAutoConfiguration提供的. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import({EnableAutoConfigurationImportSelector.class}) public @interface EnableAuto
随机推荐
- 正则表达式中test、exec、match的区别介绍及括号的用法
- java HashMap内部实现原理详解
- ASPX中的用户控件与ASP中的INCLUDE方法对比
- PHP实现小偷程序实例
- PHP中foreach循环中使用引用要注意的地方
- VML网页文件的基本格式
- 实例解析Ruby中的数值类型以及常量
- centos iso镜像文件安装教程
- SQL Server中删除重复数据的几个方法
- jQuery标签替换函数replaceWith()的使用例子
- Java自动化测试中多数据源的切换(实例讲解)
- 域名注册的相关知识(新手必读)第1/2页
- 关于移位操作的一点重要说明
- ASP.NET DropDownList控件的使用方法
- 一些有关检查数据的JS代码
- 基于Android LayoutInflater的使用介绍
- sql server性能调优 I/O开销的深入解析
- 学习RxJS之JavaScript框架Cycle.js
- Python实现的排列组合、破解密码算法示例
- Android UI使用HorizontalListView实现水平滑动