深入浅析Java中的Spring事务管理-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

创新互联主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务正镶白,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

深入浅析Java中的Spring事务管理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

环境与版本

本文出来之前的一篇文章中的hibernate的相关lib 外

Java事务管理之Hibernate

还需要加入spring的lib 包和如下的一些依赖包

      org.aopalliance

      org.aspectj

      org.apache.commons

Spring 的版本是Spring 4.1.5。

依赖包也可以到Spring 官方网站下载到 ,名字类似 spring-framework-3.0.2.RELEASE-dependencies

理论知识

Spring和Hibernate整合后,通过Hibernate API进行数据库操作时发现每次都要opensession,close,beginTransaction,commit,这些都是重复的工作,我们可以把事务管理部分交给spring框架完成。

使用spring管理事务后在dao中不再需要调用beginTransaction和commit,也不需要调用session.close() ,使用API  sessionFactory.getCurrentSession()来替代sessionFactory.openSession()

* 如果使用的是本地事务(jdbc事务)

thread

* 如果使用的是全局事务(jta事务)

jta

Spring中Propagation类的事务属性详解:

     PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

     PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

     PROPAGATION_MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

     PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

     PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

     PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

     PROPAGATION_NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

Spring 可以使用xml方式进行配置或是使用注解声明的方式进行事务的管理。

xml 方式配置事务代码实例

代码结构如下:

深入浅析Java中的Spring事务管理

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
 
 
  
  
  
   
   
   
   
   
  
 
  
   
   
    
    org.hibernate.dialect.OracleDialect 
    update 
    true 
    true 
    20 
    true 
    org.springframework.orm.hibernate4.SpringSessionContext 
    true 
    
   
   
    
    com.oscar999.trans.sprhib.model 
    
   
  
 
  
  
   
  
  
   
    
    
   
  
  
   
   
  
 
 

当前文章:深入浅析Java中的Spring事务管理-创新互联
文章位置:http://ybzwz.com/article/pdeio.html