`
周禄康
  • 浏览: 158069 次
  • 性别: 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为2.0的!

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

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

    java大作业基于SSH框架的学生成绩管理系统源码.zip

    java基于SSH框架的学生成绩管理系统源码。要求: (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 目的...

    完整可用的SSH框架

    从此不用再自己编写配置,采用企业化的框架设计。最近,负责开发项目,很多人对SSH框架配置出错表示很头痛,我自己配置好了通用框架分享给大家。SPRING配置文件中包括了日志处理和事务管理。

    ssh框架使用spring配置事务所需的jar包

    需要的jar包 aopalliance.jar aspectjrt.jar aspectjweaver.jar

    MyEclipse的SSH框架搭建教程带干净项目、oracle表空间用户密码权限创建

    里面有我做公司项目前用MyEclipse搭建ssh框架测试通过后的一个项目,此项目添加了aop和事务支持,有完整的action测试; 还有自己做的3到4页的MyEclipse搭建SSH的傻瓜式教程,还有oracle数据库连接引擎的配置的图片...

    ssh框架整合step by step (springMVC + spring 5.0.4 + hibernate 5.0.12)

    # 事务的织入: 开发时不必再处理SessionFactory、Session等, 只要按配置文件指定的格式对方法进行命名, 即可自动开启/提交事务; # 做了BaseDao的简单封装, 并做了基于BaseDao的增/删/改/查/分页查询等操作的示例(并...

    SSH框架详解

    个人中的SSH详细介绍,包括struts1的工作原理、Struts1优缺点(为什么要用strust1)、struts1的工作原理及基本配置详解、struts2工作原理、struts2运行机制、Struts2的工作流程、Struts2工作原理、Struts1与Struts2...

    基于SSH框架的成绩管理与分析系统

    本系统采用SSH框架严格按照软件开发思想,实现的成绩管理系统,系统功能不是很复杂但是应用了当下最流行的SSH框架,实现了对事务的处理,权限的拦截以及连接池的配置等等包括相信的设计文档。和powerdesign设计源码

    SSH框架整合完整录像

    SSH框架整合录像 解决包冲突 sessionFactory 问题 project的命名经验 事务的配置

    SSH 框架所需JAR包

    2.commons-logging-1.1.1.jar(ASF出品的日志包,struts2 2、spring、hibernate框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录) 3.common-annotations.jar(支持注解的包) 4.aspectjrt.jar(支持AOP的包) 5....

    SSH框架整合

    Srping+SpringMVC+hibernate搭建,其中包含了详细的配置文件的功能注释,例如:声明式事务管理的两种实现方式(注解式与配置式),还有不同连接池的配置(apache.dbcp/alibaba.druid.pool),不同数据库连接(Oracle/...

    OA项目SSH整合框架

    -- 配置事务管理器 --&gt; &lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt; &lt;!-- 配置基于注解的事务支持--&gt; 2,测试代码 1,Service类 @Service public class ...

    Java整合SSH框架

    在Java中整合SSH(Spring + Struts2 + Hibernate)框架时,需要引入相应的jar包。以下是一些基本的jar包和它们的用途: Spring基本和IOC的jar包: org.springframework.web-x.x.x.RELEASE.jar:在web.xml中配置...

    SSH的简单工程框架

    SSH的简单工程框架,有LOG管理,有事务管理,有三个框架的衔接,maven的配置

    ssh框架在application.xml中配置数据源所需jar

    -- 配置事务管理器 --&gt; &lt;/property&gt; &lt;!-- 配置事务的传播特性 --&gt; *" propagation="REQUIRED"/&gt; *" propagation="REQUIRED"/&gt; *" propagation="REQUIRED"/&gt; *" read-only="true"/...

    一个基于SSH项目框架搭建的实例 超详细

    SSH 的各种配置文件 数据源 文件配置 事务 反转数据库 BaseDao 36张表 一个一个看 也看会了 项目的命名规范 包的命名规范 没有没有的了 快下了 我的项目差点都给你们了

    基于jsp图书管理系统ssh+mysql源码.zip

    由于本人比较熟悉ssh框架技术编程,熟练使用了sqlserver数据库,所以开发本系统我们采用SSH框架技术设计模式,采用了开源框架Struts,它采用了当今软件设计的最新技术,具有开发效率高、设计灵活、生成的软件界面友好...

    ssh框架面试题

    Hibernate工作原理及为什么要用?...1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory

    struts2.4+spring3.1+hibernate4.1的SSH框架

    在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。...

Global site tag (gtag.js) - Google Analytics