文档章节

spring的事务管理

s
 swk998741
发布于 2014/03/17 21:16
字数 747
阅读 51
收藏 0

Srping 事务管理

一 事务管理的一.事务的4个特性:
   原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全部做。
   一致性:数据不会因为事务的执行而遭到破坏。
   隔离性:一个事务的执行,不受其他事务(进程)的干扰。既并发执行的个事务之间互不干扰。
   持久性:一个事务一旦提交,它对数据库的改变将是永久的。

二.事务的实现方式:
实现方式共有两种:编码方式;声明式事务管理方式。

基于AOP技术实现的声明式事务管理,实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚事务。

声明式事务管理又有两种方式:基于XML配置文件的方式;另一个是在业务方法上进行@Transactional注解,将事务规则应用到业务逻辑中。

三.创建事务的时机:

是否需要创建事务,是由事务传播行为控制的。读数据不需要或只为其指定只读事务,而数据的插入,修改,删除就需要事务管理了。

一种常见的事务管理配置:事务拦截器TransactionInterceptor搜索和事务自动代理BeanNameAutoProxyCreator相结合的方式

<!--定义Hibernate的事务管理器HibernateTransactionManager -->
    <bean id="transactionManager"
     class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!-- 依赖注入上面定义的sessionFactory -->
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean> 
<!--定义Spring的事务拦截器TransactionInterceptor -->
    <bean id="transactionInterceptor"      class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <!--  依赖注入上面定义的事务管理器transactionManager -->
        <property name="transactionManager" ref="transactionManager"/>
      <!-- 定义需要进行事务拦截的方法及所采用的事务控制类型 -->   
    <property name="transactionAttributes">    
    <props>
    <!-- 以browse、list、load、get及is开头的所有方法采用只读型事务控制类型 -->
    <prop key="browse*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
    <!-- 所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -->
    <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
</bean>

<!-- 定义BeanNameAutoProxyCreatorf进行Spring的事务处理-->
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <!--  针对指定的bean自动生成业务代理 -->
    <property name="beanNames">
            <list>
                <value>adminService</value>
                <value>columnsService</value>
                <value>newsService</value>
                <value>crawlService</value>
                <value>memberLevelService</value>
                <value>memberService</value>
                <value>categoryService</value>
                <value>merService</value>
                <value>cartService</value>
                <value>ordersService</value>
                <value>trafficService</value>
            </list>
    </property>
    <!--  这个属性为true时,表示被代理的是目标类本身而不是目标类的接口 -->
    <property name="proxyTargetClass">
    <value>true</value>
    </property>
       <!--  依赖注入上面定义的事务拦截器transactionInterceptor -->
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
            </list>
        </property>
    </bean>

事务管理器有一下几种:

JDBC DataSource事务管理器
org.springframework.jdbc.datasource.DataSourceTransactionManager

Hibernate的事务管理器:
org.springframework.orm.hibernate.HibernateTransactionManager

JDO的事务管理器:
org.springframework.orm.jdo.JdoTransactionManager

JTA事务管理器:
org.springframework.transaction.jta.JtaTransactionManager

OJB事务管理器:
org.springframework.orm.ojb.PersistenceBrokerTransactionManager

© 著作权归作者所有

共有 人打赏支持
s
粉丝 3
博文 2
码字总数 1425
作品 0
杭州
MyBatis在Spring中的事务管理

项目中经常遇到MyBatis与Spring的组合开发,并且相应的事务管理交给Spring。今天我这里记录一下Spring中Mybatis的事务管理。 先看代码: spring-context.xml db.properties db.sql UserDAO....

linxyz
07/24
0
0
Spring AOP 日志拦截器的事务管理

如果要在方法执行前或后或抛出异常后加上一个自己的拦截器,或者一个环绕拦截器,在拦截器中执行一些操作,比如执行一些数据库操作,记录一些信 息,这些操作通过调用一个服务类的方法来执行...

哲别0
05/18
0
0
Spring的事务管理实现原理初探

这里主要是通过分析部分源码进行剖析Spring事务管理的实现原理。 再分析源码前,现从理论上大概分析哈: 纯JDBC操作数据库的基本步骤: 1. 获取连接 Connection conn = DriverManager.getCon...

rockypeng
2014/01/19
0
0
Spring编程式和声明式事务实例讲解

Java面试通关手册(Java学习指南):https://github.com/Snailclimb/JavaGuide 历史回顾: 可能是最漂亮的Spring事务管理详解 Spring事务管理 Spring支持两种方式的事务管理: 编程式事务管理...

snailclimb
05/23
0
0
分析 Spring 的编程式事务管理及声明式事务管理(转)

开始之前 关于本教程 本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之。 先决条件...

君辰
2015/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
59分钟前
0
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
0
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部