`

hibernate 和 spring 整合的事物管理

阅读更多
    由于以前没有深入接触到spring,对spring的事物支持不了解,以前自己参与的一些系统中,出现过在业务逻辑层一个小步出错,但是前面的步骤已经持久化,不能回滚。只能通过定时器读取日志,发现出错就删除这条记录。在最近较为深入的了解spring,发现spring对事物的支持能解决这一问题。
    一、如果多个数据源(使用spring的jta事物管理策略)
    org.springframework.transaction.jta.JtaTransactionManager代理了J2EE容器的JTA子系统,提供了跨越多个资源的分布式事物管理能力,这种事物管理策略必须运行在J2EE应用服务器环境中,spring只不过是提供一种集成到J2EE容器的事务管理器,并不执行具体的事物管理。
    对于跨越多个Hibernate SessionFactory事物资源的分布式系统,只需简单吧JtaTransactionManager同多个LocalSessionFactoryBean定义结合起来作为一个事务策略,如果所有JDBC dataSource都支持事务的容器,那么只要一个业务对象使用了JTA策略,其他的业务对象会自动参与当前的JTA事务
   xml配置
  
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName">
         <value>java:cn/com/test/jdbc/dataSource1</value>
      </property>
    </bean>
     <bean id="dataSource2"class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName">
         <value>java:cn/com/test/jdbc/dataSource2</value>
      </property>
    </bean>

      <bean id="SessionFactory1"class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
      <property name="dataSource">
         <value>dataSource</value>
      </property>
      ...//省略
    </bean>
   
     <bean id="SessionFactory2"class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
      <property name="dataSource">
         <value>dataSource2</value>
      </property>
      ...//省略
    </bean>
    
.....//省略配置dao的bean
    
   <bean id="myTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
   
   <bean id="myService" class="test.testService.impl.TestServiceImpl">
      <property name="transactionManager">
         <value>myTransactionManager</value>
      </property>
      ..//注入Dao
   </bean>
   

    
   二、一个数据源
      当只有一个数据源时(大多数情况下,只有一个数据源),可以使用org.springframework.orm.hibernate3.HibernateTransactionManager.这种事务不依赖J2EE容器,仅仅需要org.hibernate.SessionFactory对象的一个实例。
      xml配置文件
    
         <bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactonManager">
      <property name="sessionFactory">
         <value>sessionFactory</value>
      </property>
    </bean>
     

    以前我们的事务都是使用DB的事务来处理的,但是如果我们打开一个事务,并把一系列过程处理完再关闭事务,那么我们Dao层的代码会耦合业务层的代码,再我了解到jta和spring之前,对这样的问题,解决不了,现在再了解到这样的技术后,以后都能解决。
    我们在工作中会遇到很多很多的问题,可能受限于我们当时的知识储备和经验不能解决,但是在整个java社区中可能其他人也遇到这样的问题,他们已经做出了成熟的解决方案。我们不能停下学习的脚步。
    今日记一事,明日明一理,积久而成学。
1
0
分享到:
评论
1 楼 lkl 2014-10-17  
很好的一篇文章

相关推荐

    spring整合hibernate实现事务处理

    spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式

    spring与hibernate的整合

    spring与hibernate的整合 spring事务的配置

    使用Maven Hibernate5 之Spring整合

    在准备整合Spring之前,也在网上看了各种配置。但是楼主心里还是很纠结,为啥一定要配置事务。配事务就陪事务为啥要配拦截,配拦截就配拦截为啥要配自动代理。都是因为楼主是java菜鸟。不然这些肯定是java方面的常识...

    Spring整合hibernate(2)之基于HibernateTemplate的整合

    Spring整合hibernate(2)之基于HibernateTemplate的整合,jar需要自己添加!

    Spring整合Hibernate

    Spring4整合Hibernate4实现用户购买图书和结账等操作,整合主要实现用IoC容器来管理Hibernate的SessionFactory实例,并使Hibernate使用Spring所提供的声明式事务……

    struts+spring+hibernate三大框架整合

    ssh三大框架的整合步骤,非常详细。包含spring整合struts、spring整合hibernate、声明式事务说明等。

    Struts2 Spring3 Hibernate3.3框架整合

    Struts2 Spring3 Hibernate3.3框架整合,增删改查,包含有数据库建表语句,包含有JAR包,包含有源代码。包含有事务的配置以及运用。使用的是Oracle的序列来提供的主键自增,建表和建立序列的sql语句,已经放在工程...

    整合jsf hibernate spring实例

    部门人员一对多的CRUD操作 hibernate: 管理实体关系映射 spring:数据源配置与获得... IOC依赖注入 和 AOP 事务管理 jsf : backing bean的操作 jsf 标签应用 jsf 信息国际化以资源绑定 jsf 表单验证 jsf 导航设定

    spring mvc+hibernate实现事务管理(配置文件版)

    spring mvc hibernate整合,采用MyEclipse自动生成包和配置文件,jar包可能有多余,但是不影响整体效果。服务器tomcat。数据库mysql。

    struts2_hibernate_spring整合(一)

    实现了添加用户功能并实现了列表功能,services方法也实现了事务功能, 此压缩文件中包括了一部分jar文件, 另外的jar文件在struts2_hibernate_spring整合(二)中

    struts hibernate spring 实用整合

    struts hibernate spring 实用整合 spring的配置文件(applicationContext.xml)中,配置了事务和一个日志功能的AOP的结合,是非常具有实用价值的针对初学者的入门实例。

    spring、struts、hibernate+mybatis 整合在在一起

    spring、struts、hibernate+mybatis 整合在在一起

    图书管理系统(struts+hibernate+spring).rar

    通过这个资料包,用户可以深入了解和学习如何在Web应用程序中实现一个图书管理系统,掌握如何将Struts、Hibernate和Spring框架整合在一起,实现分层架构、MVC设计模式以及ORM映射等关键技术。Struts作为一款优秀的...

    springboot(4) 整合mybatis和hibernate

    springboot(4) 整合mybatis和hibernate 请删除项目中本地仓库的配置,或者改成国内的公共仓库,否则将无法启动

    spring-hibernate整合实例

    spring整合hibernate 1、用spring IOC容器管理hibernate的sessionFactory;2、hibernate使用spring的声明式事务管理;

    Spring如何整合Hibernate和struts --cglib来实现事务管理.rtf.rtf

    Spring如何整合Hibernate和struts --cglib来实现事务管理.rtf.rtf

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...

    struts2、hibernate、spring三大框架整合项目包

    详细示范了当前java里面流行的三大框架的整合,对于spring的配置文件applicationContext.xml做了详细的注释说明,里面包含数据库连接池、Hibernate里的SessionFactory、事务等重点模块的配置。在实际开发过程中多数...

    struts+spring+hibernate整合

    Spring4.0、Struts2.3.15、Hibernate4.2.4、jQuery1.9.1涉及到了诸多开发时的细节:ModelDriven、Preparable 拦截器、编写自定义的类型转换器、Struts2 处理 Ajax、OpenSessionInViewFilter、迫切左外连接、Spring ...

    会员管理系统(struts+hibernate+spring)130226.rar

    Spring框架在整个系统中起到了粘合剂的作用,它将Struts和Hibernate框架整合在一起,实现了依赖注入和事务管理等功能。通过Spring的配置,开发人员可以方便地对各个组件进行管理和控制,提高了系统的

Global site tag (gtag.js) - Google Analytics