spring的事务管理
Spring提供了编程性事务管理与声明式的事务管理。Spring事务管理的抽象关键在于org.springframework.transaction.PlatformTransactionManager接口的实现。
PlatfromTransactionManager接口有许多具体的事务实现类,例如:DataSourceTransactionManager、HibernateTransactionManager、JdoTransactionManager,JtaTransactionManager等等。
此处需要注意的是,要使用Mysql数据库进行事务处理,必须建立支持事务的表类型,例如:InnoDB的表类型。
1、 Spring提供的编程性事务
可以清楚的控制事务的边界,自行实现事务的开始时间,撤销时间,结束时间等,可以实现细粒度的事务控制。
编码例子如下:
private PlatformTransactionManager txManager;
public void setTxManager(PlatformTransactionManager txManager) {
this.txManager = txManager;
}
public void insertUser(User user) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try{
JdbcTemplate tmp = new JdbcTemplate(dataSource);
tmp.execute("insert into tbl_user (name,pwd) values ('"+user.getName()+"','"+user.getPwd()+"')");
//写错的sql,等着抛出运行时异常
tmp.update("sssssssssssss");
UserUpdate uu = new UserUpdate(dataSource);
uu.update(new Object[]{user.getName(),user.getPwd()});
}catch(DataAccessException e){
txManager.rollback(status);
throw e;
}
txManager.commit(status);
}
配置文件的写法如下:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="userDao" class="com.itcast.dao.impl.UserDaoImpl">
<property name="dataSource" ref="dataSource"></property>
<property name="txManager" ref="txManager"></property>
</bean>
2、 声明式的事务管理
Spring事务的相关API可以不用介入程序之中,只是在配置文件上修改配置下就可以移去事务管理服务。Spring的声明式事务是通过spring的AOP来实现的,所以执行程序的时候,请记得将spring-aop.jar给放到classpath中。
1)、最基础的事务配置如下:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="userDao" class="com.itcast.dao.impl.UserDaoImpl">
<property name="dataSource" ref="dataSource"></property>
<property name="txManager" ref="txManager"></property>
</bean>
<!-- 事务代理 -->
<bean id="userDaoTxProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target" ref="userDao"></property>
<property name="transactionManager" ref="txManager"></property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
</props>
我们在使用的时候只是需要取得userDaoTxProxy 而不是userDao就可以完成对这个Dao的事务控制了。
2)、将事务抽象提取,让我们的代理类取得一个拦截器方式的事务,从而将每个代理类的事务都抽象出来集中管理,这样只要我们命名规范,那么我们的事务处理就更加容易。
例如:
分享到:
相关推荐
Spring Framework 是一个广泛使用的开源Java应用框架,特别适用于企业级应用程序开发。它的最新版本v6.1.4为我们带来了许多新特性和改进,使得开发者能够更高效、更灵活地构建可维护的、高性能的应用程序。这个...
13. **Spring Cloud**:虽然不在本压缩包中,但Spring Cloud是一系列工具的集合,用于快速构建分布式系统,如服务发现、配置中心、负载均衡等。 在"spring-framework-5.2.3.RELEASE"目录中,你可以找到Spring框架的...
13. **事件驱动架构**:Spring支持事件驱动编程模型,允许组件之间通过发布和监听事件进行通信。 14. **国际化的支持**:Spring提供对多语言环境的支持,帮助开发者轻松创建国际化应用。 以上只是Spring Framework...
Getting started with Spring ...Chapter 13 – More Spring Web MVC – internationalization, file upload and asynchronous request processing Chapter 14 – Securing applications using Spring Security
09. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 10. </listener> 11. 12. <servlet> 13. <servlet-name>spring</servlet-name> 14. <servlet-class>org.spring...
13. **Spring WebSocket**:Spring框架支持WebSocket协议,允许实现实时双向通信,适用于需要低延迟和高效率交互的场景。 综上所述,Spring Framework 4.3.0包含了一系列强大的工具和模块,覆盖了企业级应用开发的...
13. **安全管理**:Spring Security是Spring的一个子项目,提供了一套全面的安全管理解决方案,包括认证、授权、CSRF保护等。 通过深入学习和理解Spring Framework 3.2.13.RELEASE的源代码,开发者可以更好地掌握这...
13. **测试支持**:Spring Test模块提供了更多的测试工具和功能,包括模拟对象、对Web应用的测试支持等,使得测试更加便捷。 14. **依赖注入优化**:Spring 4.0改进了依赖注入机制,提高了初始化速度和内存使用效率...
13. **RESTful服务**:通过Spring MVC和Spring WebFlux,Spring支持构建符合REST原则的Web服务,便于与其他系统进行API交互。 在"Spring-framework-5.0.7 jar包"中,"libs"目录下的jar文件可能包括Spring的各个模块...
13. **测试支持**:Spring框架包含了丰富的测试工具,如Mockito、Spring Test等,可以帮助开发者编写单元测试和集成测试,确保代码质量。 14. **Spring WebFlux**:Spring WebFlux是Spring的响应式编程模型,适用于...
13. **Spring Boot Actuator**:Actuator是Spring Boot的一部分,提供了一系列监控和管理应用的端点,帮助开发者了解应用的健康状况、性能指标等。 14. **Spring AMQP**:Spring AMQP 提供了对Advanced Message ...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
13. **Improved Testing Support**:Spring 3.2 增强了测试支持,包括模拟(Mocking)和代理(Stubbing)的改进,以及对Web应用程序的测试工具。 14. **Performance Enhancements**:Spring 3.2 进行了一系列性能...
文档中包括13本收集的 Spring Frameworks 相关的技术数据,均为英文版,包括Spring 4 和 Spring 5,内容涉及 Spring Core-Frameworks、 Spring-Boot、 Spring Micro-Services 等。书籍列表如下 Beginning Spring ...
13. `org.springframework.web.portlet`:针对portlet应用的MVC支持。 14. `org.springframework.web.bind`:处理HTTP参数绑定和数据校验的类。 15. `org.springframework.web.context`:Web应用上下文相关类,...
虽然Spring Framework本身不包含Spring Boot,但5.3.x版本与Spring Boot 2.x配合使用时,可以快速创建独立运行的应用程序,大大简化了配置过程。 4. **Java 11支持** Spring 5.3.x 支持Java 11及更高版本,这使得...
13. `org.springframework.orm-3.1.0.M1.jar`: 整合了多种ORM框架,如Hibernate、iBatis、JDO和JPA,为数据持久化提供了统一的接口。 14. `org.springframework.oxm-3.1.0.M1.jar`: 支持Object到XML和XML到Object的...
13. `org.springframework.orm-3.0.0.RELEASE`:集成了各种ORM(对象关系映射)框架,如Hibernate、iBatis、JDO,以及Spring自己的JPA实现,提供统一的事务管理和数据访问接口。 14. `org.springframework.oxm-...
13. **国际化与本地化**:Spring提供了强大的I18N(Internationalization)支持,5.2.13.RELEASE可能有这方面的改进,帮助开发者更轻松地构建多语言应用。 14. **性能优化**:每个新版本通常都会进行性能优化,减少...