Java Web架构设计程序员Java学习笔记

Spring对事务(Database Transaction)的

2017-04-21  本文已影响459人  stone305585

最近的一个项目在写JavaWeb,在service层需要用到@Transaction,之前也用过但为什么用、怎么用、原理了解并不多,查查资料做个总结记录。

参考资料:

其中资料4是针对Spring2.0的,我看了看Spring3.2.14的源码和2.0的大同小异,理解编程思路即可。建议先看Doc,英文不懂的看翻译。然后再看看资料3,最后看源码。下面记录一下笔记:

1、什么是事务

事务作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

2、为什么要用Spring的事务管理

这部分也就是Doc中提到的Spring的优势,Spring解决了原来J2EE开发需要面临的全局事务本地事务,Spring解决以上两者的不足。它使应用开发者能够使用在任何环境下使用一致的编程模型。Spring框架同时提供声明式和编程式事务管理。声明事务管理是多数使用者的首选。

3、声明式事务管理的用法

编程式事务管理主要采用分别是:TransactionTemplate和直接使用PlatformTransactionManager。编程式对自身代码侵入性较强,不符合我大Spring的高雅风(bi)格。具体用法详见资料。
声明式有两种写法:

    <tx:annotation-driven transaction-manager="txManager"/>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

通过@Transactional注解可以设置以下事务属性:

注解添加属性.png

关于每种属性的意义,属性中参数的不同所代表的事务区别这里不再赘述。

推荐文章开头的资料三。

4、划重点:

欢迎在评论区批评建议,另外周末写一篇介绍《Android新手项目:扫描和生成二维码的app构建》文章,从头到尾介绍一个Android App构建过程。

上一篇 下一篇

猜你喜欢

热点阅读