`

springframework【13】

阅读更多

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的声明式事务是通过springAOP来实现的,所以执行程序的时候,请记得将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 v6.1.4.zip

    Spring Framework 是一个广泛使用的开源Java应用框架,特别适用于企业级应用程序开发。它的最新版本v6.1.4为我们带来了许多新特性和改进,使得开发者能够更高效、更灵活地构建可维护的、高性能的应用程序。这个...

    SpringFramework_v5.2.3.zip

    13. **Spring Cloud**:虽然不在本压缩包中,但Spring Cloud是一系列工具的集合,用于快速构建分布式系统,如服务发现、配置中心、负载均衡等。 在"spring-framework-5.2.3.RELEASE"目录中,你可以找到Spring框架的...

    最新版spring-framework-4.3.10.RELEASE-dist完整包

    13. **事件驱动架构**:Spring支持事件驱动编程模型,允许组件之间通过发布和监听事件进行通信。 14. **国际化的支持**:Spring提供对多语言环境的支持,帮助开发者轻松创建国际化应用。 以上只是Spring Framework...

    Getting.started.with.Spring.Framework.2nd.Edition1491011912.epub

    Getting started with Spring ...Chapter 13 – More Spring Web MVC – internationalization, file upload and asynchronous request processing Chapter 14 – Securing applications using Spring Security

    spring_MVC源码

    09. &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; 10. &lt;/listener&gt; 11. 12. &lt;servlet&gt; 13. &lt;servlet-name&gt;spring&lt;/servlet-name&gt; 14. &lt;servlet-class&gt;org.spring...

    spring-framework-4.3.0 jar包集合

    13. **Spring WebSocket**:Spring框架支持WebSocket协议,允许实现实时双向通信,适用于需要低延迟和高效率交互的场景。 综上所述,Spring Framework 4.3.0包含了一系列强大的工具和模块,覆盖了企业级应用开发的...

    spring-framework-3.2.13.RELEASE 源代码

    13. **安全管理**:Spring Security是Spring的一个子项目,提供了一套全面的安全管理解决方案,包括认证、授权、CSRF保护等。 通过深入学习和理解Spring Framework 3.2.13.RELEASE的源代码,开发者可以更好地掌握这...

    Spring-framework4.0

    13. **测试支持**:Spring Test模块提供了更多的测试工具和功能,包括模拟对象、对Web应用的测试支持等,使得测试更加便捷。 14. **依赖注入优化**:Spring 4.0改进了依赖注入机制,提高了初始化速度和内存使用效率...

    Spring-framework-5.0.7 jar包

    13. **RESTful服务**:通过Spring MVC和Spring WebFlux,Spring支持构建符合REST原则的Web服务,便于与其他系统进行API交互。 在"Spring-framework-5.0.7 jar包"中,"libs"目录下的jar文件可能包括Spring的各个模块...

    springframework

    13. **测试支持**:Spring框架包含了丰富的测试工具,如Mockito、Spring Test等,可以帮助开发者编写单元测试和集成测试,确保代码质量。 14. **Spring WebFlux**:Spring WebFlux是Spring的响应式编程模型,适用于...

    Spring Framework 开发参考手册

    13. **Spring Boot Actuator**:Actuator是Spring Boot的一部分,提供了一系列监控和管理应用的端点,帮助开发者了解应用的健康状况、性能指标等。 14. **Spring AMQP**:Spring AMQP 提供了对Advanced Message ...

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    spring完整jar包(Spring Framework version 3.2.0.M1)

    13. **Improved Testing Support**:Spring 3.2 增强了测试支持,包括模拟(Mocking)和代理(Stubbing)的改进,以及对Web应用程序的测试工具。 14. **Performance Enhancements**:Spring 3.2 进行了一系列性能...

    Spring Framework 数据(均为英文本, 均较新, 2017~2018)

    文档中包括13本收集的 Spring Frameworks 相关的技术数据,均为英文版,包括Spring 4 和 Spring 5,内容涉及 Spring Core-Frameworks、 Spring-Boot、 Spring Micro-Services 等。书籍列表如下 Beginning Spring ...

    spring 常用的26个包

    13. `org.springframework.web.portlet`:针对portlet应用的MVC支持。 14. `org.springframework.web.bind`:处理HTTP参数绑定和数据校验的类。 15. `org.springframework.web.context`:Web应用上下文相关类,...

    spring-framework-master.zip

    虽然Spring Framework本身不包含Spring Boot,但5.3.x版本与Spring Boot 2.x配合使用时,可以快速创建独立运行的应用程序,大大简化了配置过程。 4. **Java 11支持** Spring 5.3.x 支持Java 11及更高版本,这使得...

    spring3.1包名解析

    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的...

    spring3.0架包

    13. `org.springframework.orm-3.0.0.RELEASE`:集成了各种ORM(对象关系映射)框架,如Hibernate、iBatis、JDO,以及Spring自己的JPA实现,提供统一的事务管理和数据访问接口。 14. `org.springframework.oxm-...

    官方原版完整包 spring-framework-5.2.13.RELEASE.zip

    13. **国际化与本地化**:Spring提供了强大的I18N(Internationalization)支持,5.2.13.RELEASE可能有这方面的改进,帮助开发者更轻松地构建多语言应用。 14. **性能优化**:每个新版本通常都会进行性能优化,减少...

Global site tag (gtag.js) - Google Analytics