由于以前没有深入接触到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社区中可能其他人也遇到这样的问题,他们已经做出了成熟的解决方案。我们不能停下学习的脚步。
今日记一事,明日明一理,积久而成学。
分享到:
相关推荐
它提供了IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)机制,简化了对象的创建和管理。此外,Spring还包含AOP支持,用于实现日志、事务等横切关注点。Spring MVC为Web应用提供了...
Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护性高的Web应用程序。本篇将深入剖析这三者如何协同工作,并提供实际范例应用。 首先,Struts2作为MVC(模型-视图...
Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用在企业级Web应用开发中极为常见。这个管理系统就是基于这三个框架的集成,提供了高效、灵活且可维护的解决方案。 Struts2作为MVC(Model-View-...
- 简化事务管理:Spring的AOP事务管理使得事务处理更加统一和简洁。 - 支持多种数据库:Hibernate的数据库无关性使得项目更容易迁移或适应不同的数据库环境。 - 可扩展性:Spring的模块化设计使得添加新功能或更换...
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例全书》是一本深入探讨J2EE Web应用程序开发的专业书籍。J2EE,全称Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的...
总的来说,"SpringMVC+Hibernate+Spring整合实例"提供了一个全面的学习平台,帮助开发者深入理解Java企业级应用的开发模式和最佳实践。通过这个实例,你可以提升自己的技能,为未来的项目开发打下坚实的基础。
这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用02"的学习资源,很可能是关于这三大框架集成使用的详细教程或案例集。02这个文件名可能代表系列的第二部分,意味着它可能在前一部分的基础上进一步深入讲解...
3. **事务管理**:Spring的事务管理支持声明式和编程式,简化了事务处理。 4. **易于测试**:Spring的Mock对象和AOP支持使单元测试变得更加简单。 SSH整合项目的文件结构通常包括以下几个部分: - `struts-config....
本篇文章将详细探讨如何通过Spring整合Hibernate来实现事务处理,重点介绍注解方式和XML配置方式。 首先,我们了解事务处理在数据库操作中的重要性。事务是一组操作,这些操作要么全部成功,要么全部失败,确保数据...
这本由蒲子明编著的《Struts 2+Hibernate+Spring整合开发技术详解》深入探讨了如何将这三个框架有效结合,以构建高效、模块化的Web应用。书中第12到17章的内容涵盖了以下几个关键知识点: 1. **Struts 2框架**: -...
虽然具体的章节内容未知,但以上是基于Struts 2、Hibernate和Spring整合开发的常见知识点。在阅读或学习这些源码时,你可以逐步理解每个框架如何协同工作,以及如何通过整合提高开发效率和应用质量。
本文将深入探讨Spring与Hibernate整合时的事务管理,帮助你更好地理解和运用这些技术。 首先,Spring框架是Java企业级应用的基石,它提供了一种依赖注入(Dependency Injection,DI)的方式,使得组件之间的耦合度...
Struts 2、Hibernate 和 Spring 是Java开发中最流行的三大...通过"Struts.2.Hibernate.Spring整合开发技术详解"的全套视频和源码,你可以深入学习SSH整合的每个细节,从实际案例中积累经验,提升自己的Java开发能力。
书中会详细讲述如何配置这些框架,使它们协同工作,包括Spring与Hibernate的事务管理、数据源配置、以及Struts2与Spring的整合等。 除此之外,书中还可能涵盖了单元测试、异常处理、安全性配置等方面的内容,这些都...
在"Struts2+Hibernate+Spring整合开发深入剖析与范例应用06"中,我们可能涉及以下几个关键知识点: 1. **Struts2框架**:Struts2是一个强大的MVC框架,用于构建动态Web应用。它的核心是Action类,它处理HTTP请求并...
Hibernate的SessionFactory和Transaction可以通过Spring的配置文件进行管理,从而在Action中无须显式处理SessionFactory和事务,简化了代码。 整合步骤大致如下: 1. 引入相关jar包。 2. 配置Spring的...
当Struts、Hibernate和Spring整合时,通常Spring作为核心框架负责整个应用的管理,包括初始化Struts和Hibernate。Spring可以注入Action类中的依赖,比如DAO(Data Access Object)或Service层对象,这样就可以实现...
**标题:“Hibernate与Spring整合”** 在Java开发中,Hibernate和Spring都是不可或缺的框架。Hibernate是一个优秀的对象关系映射(ORM)工具,它简化了数据库操作,而Spring框架则提供了全面的应用程序管理,包括...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...
在"Struts 2+Hibernate+Spring整合开发技术详解"这本书中,作者蒲子明深入浅出地讲解了这三大框架的整合使用。随书源码包含第19至21章的内容,主要涉及的是实际项目中的两个应用场景:BBS论坛系统和Photo System照片...