`
周禄康
  • 浏览: 161030 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

ssh框架中事务管理配置

    博客分类:
  • ssh
阅读更多

方法一:

<bean id="txManager" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager" ref="transactionManager" />
   <property name="transactionAttributes">
    <props>   
     <prop key="remove*">PROPAGATION_REQUIRED,-DataAccessException</prop>
     <prop key="update*">PROPAGATION_REQUIRED,-DataAccessException</prop>
     <prop key="handle*">PROPAGATION_REQUIRED,-DataAccessException</prop>
     <prop key="save*">PROPAGATION_REQUIRED,-DataAccessException</prop>
     <prop key="init*">PROPAGATION_REQUIRED,-DataAccessException</prop>
     <prop key="create*">PROPAGATION_REQUIRED,-DataAccessException</prop>
     <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
</bean>

这样配置可以对各个层的业务进行管理.在业务层里调用dao接口,根据事务可以同时提交,同时回滚.

方法二:

<!--
   定义一个切面
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
   <tx:attributes>
    <tx:method name="handleAdd*" propagation="REQUIRED" rollback-for="AccessException"/>
    <tx:method name="handleUpdate*" propagation="REQUIRED" rollback-for="AccessException"/>
    <tx:method name="handleGet*" propagation="REQUIRED" />
    <tx:method name="handleDel*" propagation="REQUIRED" rollback-for="AccessException" />
    <tx:method name="remove*" read-only="false" propagation="REQUIRED" rollback-for="AccessException" />
    <tx:method name="update*" propagation="REQUIRED" rollback-for="AccessException"/>
    <tx:method name="add*" propagation="REQUIRED" rollback-for="AccessException" />
    <tx:method name="save*" propagation="REQUIRED" rollback-for="AccessException"/>
    <tx:method name="delete*" propagation="REQUIRED" rollback-for="AccessException" />
    <tx:method name="modify*" propagation="REQUIRED" rollback-for="AccessException" />
    <tx:method name="create*" propagation="REQUIRED" rollback-for="AccessException" />
    <tx:method name="init*" propagation="REQUIRED" rollback-for="AccessException" />
   </tx:attributes>
</tx:advice>
<!--   哪些业务类使用切面-->

<aop:config>
   <aop:pointcut id="reg"
    expression="execution(* com.service.impl..*.*(..))"/>
   <aop:advisor advice-ref="txAdvice" pointcut-ref="reg" />
</aop:config>
   第二种方法对应的web.xml配置


<filter>
   <filter-name>OpenSessionInViewFilter</filter-name>
   <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
   </filter-class>
   <init-param>
    <param-name>sessionFactoryBeanName</param-name>
    <param-value>sessionFactory</param-value>
   </init-param>
   <init-param>

<!---必须配置,且必须为true(开启),因为OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到->
            <param-name>singleSession</param-name>
            <param-value>true</param-value>       
        </init-param>
        <init-param>

<!--必须配置,否则在service层调用dao方法时会出现在只读模式下(FlushMode.NEVER/MANUAL)写操作不被允许 的问题-->
        <param-name>flushMode </param-name>

      <param-value>AUTO</param-value>        
        </init-param>
</filter>

.....

<filter-mapping>
   <filter-name>OpenSessionInViewFilter</filter-name>
   <url-pattern>*.do</url-pattern>
</filter-mapping>

web.xml中为什么要配置OpenSessionInViewFilter?
Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之

内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数

据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常


OpenSessionInViewFilter的主要功能是用来把一个

HibernateSession和一次完整的请求过程对应的线程相绑定,它将自动被Spring的事务管理器探测到。目的是为了实

现"Open Session in View"的模式。它允许在事务提交后延迟加载显示所需要的对象。

分享到:
评论

相关推荐

    在SSH框架中加入事务支持

    在SSH框架中,Spring是主要负责事务管理的组件,它提供了编程式和声明式两种事务管理方式。 **声明式事务管理**是Spring提供的强大特性,它允许开发者通过配置XML或注解来定义事务边界,无需在代码中显式处理。在...

    基于SSH框架的员工管理系统

    4. **整合SSH框架**:SSH框架整合后,Struts2处理用户的HTTP请求,根据配置将请求转发给Spring管理的业务Service;Service层调用Hibernate的DAO接口处理数据,完成数据库操作;处理完毕后,Service将结果返回给...

    带事务的ssh框架源代码

    在这个“带事务的ssh框架源代码”中,我们将会探讨SSH框架如何处理数据库事务,以及不同版本的Spring(1.2、2.5、3.2)在事务管理上的差异。 首先,Struts作为表现层框架,主要负责用户界面与控制器之间的交互。它...

    ssh框架事务管理applicationContext.xml配置文件

    ssh框架事务管理applicationContext.xml配置文件

    SSH框架搭建源码

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个压缩包文件"SSHdemo"提供了一个SSH框架搭建登录功能的示例,帮助开发者了解并实践如何整合这三个框架来构建一个...

    SSH框架实现的学生管理系统

    下面我们将详细探讨SSH框架在实现学生管理系统中的应用及其相关知识点。 首先,Struts2作为SSH框架的一部分,负责处理前端请求和控制业务流程。它遵循MVC(Model-View-Controller)架构,将业务逻辑、数据展示和...

    SSH框架中的多数据源配置.DOC

    在SSH框架中,多数据源配置是指在一个应用程序中使用多个数据源的配置方法。这种配置可以使得应用程序能够连接多个数据库,实现数据的集成和共享。 在SSH框架中,多数据源配置可以通过使用Spring框架的数据源配置来...

    基于SSH框架的新闻管理系统

    在IT行业中,SSH框架是Java Web开发中非常流行的一个组合,它由Struts2、Spring和Hibernate三个开源项目组成。这个“基于SSH框架的新闻管理系统”项目,利用了这三个组件的强大功能来构建一个高效、可扩展的学生宿舍...

    ssh框架图书馆管理系统

    在实际开发过程中,开发者首先会配置SSH框架,包括Struts2的配置文件(struts.xml)、Spring的配置文件(spring-context.xml)和Hibernate的配置文件(hibernate.cfg.xml)。然后,根据业务需求设计模型类,并用Hibernate...

    订单管理系统(SSH框架)

    开发者可以通过XML配置文件进行系统设置,而SSH框架则负责处理业务逻辑和数据访问。这种结构使得系统具备良好的模块化,易于扩展和升级,以适应企业不断变化的业务需求。 在压缩包中的"order"文件可能是订单管理...

    ssh框架实现的员工管理系统

    下面将详细介绍SSH框架及其在员工管理系统中的应用。 **1. Struts框架** Struts是MVC(Model-View-Controller)设计模式的一种实现,负责处理用户请求,并将数据传递给模型层和视图层。在员工管理系统中,Struts...

    Java SSH 框架整合,学习源码

    8. **实战经验**:在实际项目中,开发者需要关注性能优化、事务管理、异常处理等问题,这都需要对SSH框架有深入的理解。例如,合理使用Spring的AOP进行事务管理,避免Struts的性能瓶颈,以及优化Hibernate的查询性能...

    基于SSH框架的图书管理系统

    **SSH框架详解** ...学习这个图书管理系统,你可以深入了解SSH框架的集成,以及如何在实际项目中运用它们来处理业务逻辑、数据存储和用户界面。这将有助于提升你的Java Web开发技能,为今后的项目打下坚实基础。

    ssh框架信息管理系统

    在"ssh框架信息管理系统"中,我们看到涉及到了两个数据库表:user和manager。这表明系统可能包含了用户管理和管理员管理的功能。User表通常会包含用户的登录名、密码、邮箱、创建时间等基本信息,而Manager表可能...

    SSH框架整合入门helloworld两种事务管理方式(失败的自己)

    在本教程中,我们将深入探讨如何在SSH框架下实现一个简单的“HelloWorld”示例,并了解两种事务管理方式:编程式事务管理和声明式事务管理。 首先,我们需要理解SSH框架的核心组件: 1. **Spring**:Spring作为IoC...

    SSH框架整合项目源码

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个项目源码提供了SSH整合的实践案例,特别适合初学者学习和理解Web应用的开发流程。 Struts2作为MVC(Model-View-...

    ssh框架纯净版

    在实际开发中,SSH框架的集成使得开发者能高效地进行业务逻辑处理,同时Spring的事务管理功能可以确保数据一致性。通过阅读提供的文件,开发者可以深入理解SSH框架的工作原理,并将其应用于实际项目中,提高开发效率...

    SSH框架搭建jar包

    4. 配置spring.xml:设置Spring的配置文件,定义Bean的实例化、依赖注入以及事务管理等。 5. 配置Hibernate:创建hibernate.cfg.xml配置文件,配置数据库连接信息,实体类的映射文件(.hbm.xml),以及...

    ssh 框架搭建 pdf

    整合SSH框架需要进行一些配置工作,例如在Spring的配置文件中声明Hibernate的SessionFactory和事务管理器,以及配置Struts与Spring的整合,让Struts的Action能够使用Spring管理的DAO(数据访问对象)和Service(服务...

    SSH框架JAR包集合

    SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中的一个经典组合,用于构建高效、可维护的Web应用程序。这些框架各自负责不同的职责,Spring作为基础架构框架,Struts处理视图与控制,Hibernate则专注于...

Global site tag (gtag.js) - Google Analytics