`

关于spring+hibernate+struts架构service层的作用

阅读更多

07年11月15日

          我目前做的项目是采用struts+hibernate+spring框架来做的,这个架构是支持hibernate延迟的,即lazy="true";

          一般采用这个架构都要配service层,就不再唠叨了.关键是看一个配置文件能说明service层的作用.看看配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    
<bean id="channleManagerServiceTarget" class="com.cms.channle.service.impl.ChannleManager" singleton="true">
        
<property name="tchannleDAO">
            
<ref local="tchannleDAO" />
        
</property>
    
</bean>

    
<bean id="channleManageService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        
<property name="transactionManager">
            
<ref bean="transactionManager" />
        
</property>
        
<property name="target">
            
<ref local="channleManagerServiceTarget" />
        
</property>
        
<property name="transactionAttributes">
            
<props>
                
<prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="add*">PROPAGATION_REQUIRED</prop>
                
<prop key="delete*">PROPAGATION_REQUIRED</prop>
                
<prop key="del*">PROPAGATION_REQUIRED</prop>
                
<prop key="save*">PROPAGATION_REQUIRED</prop>
                
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="update*">PROPAGATION_REQUIRED</prop>
                
<prop key="edit*">PROPAGATION_REQUIRED</prop>
            
</props>
        
</property>
        
<property name="postInterceptors">
            
<list>
                
<ref bean="hibernateInterceptor"></ref>
            
</list>
        
</property>
    
</bean>

    
<bean id="tchannleDAO" class="com.cms.channle.dao.impl.TchannleDAO">
        
<property name="sessionFactory">
            
<ref bean="sessionFactory" />
        
</property>
    
</bean>
    

</beans>

上面代码中<property name="transactionAttributes"></property >之间是对service层配置了事务,由spring管理.struts的action里调用的时候,一般都调用service层封装的方法.因为service层的方法可能会调用多个DAO层的方法.

 

举个例子说明一下,假入说我有一个需求,就是银行的转帐需求吧,当A给B汇款1000元这个过程,A的帐户里应该减少1000元,B的帐户应该增加1000元,而这个过程是由2个DAO方法实现的,即A减少的方法,B增加的方法.

而service层的转帐方法(起名叫getResult方法)里面先调用了DAO层A减少的方法,再调用B增加的方法.配置文件的事务配置的是管理service层的事务,只有service层的转帐方法完成了DAO层的两个方法,才算这个事务结束.

如果直接调用DAO层的方法,那么spring不会管理事务,每次调用DAO的方法就算单独的一个事务,如果程序运行不稳定,A减少1000元的方法成功,B增加1000元的方法失败的情况下,由于此时的事务不是同一个事务.那么A的事务不会回滚.....结果就是数据库里面A少了1000块钱,B没有增加1000块钱........钱那里去了........出大错了吧,这个错误够严重了吧!

分享到:
评论

相关推荐

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    SSH(Struts+Spring+Hibernate)三层架构.

    SSH(Struts+Spring+Hibernate)是Java Web开发中常用的一种三层架构模式,它将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer),以实现清晰的...

    struts2+spring+hibernate框架购物车

    Struts2、Spring和Hibernate是Java企业级应用开发中非常流行的三大开源框架,它们各司其职,共同构建了一个强大的MVC(Model-View-Controller)架构。在"struts2+spring+hibernate框架购物车"项目中,这三个框架协同...

    struts+spring+hibernate(mysql)用户登录及文件上传

    Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...

    ssh框架整合详细步骤(spring+struts2+hibernate)

    Spring负责业务逻辑的管理,Struts2处理MVC模式下的控制层,而Hibernate则专注于数据持久层,三者相辅相成,共同构建了一个高度模块化、松耦合的Web应用架构。 #### 四、总结 SSH框架的整合涉及多个步骤,从Web...

    SSH项目(spring+hibernate+struts2)

    SSH项目是一种经典的Java Web开发框架组合,由Spring、Hibernate和Struts2三个开源框架组成。这个项目示例提供了一个基于这些技术的简单应用,帮助开发者理解如何将它们整合在一起进行实际开发。 **Spring框架**是...

    ssh(struts+spring+hibernate)教务管理信息系统(全部代码) 可以直接运行

    SSH(Struts+Spring+Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。这个教务管理信息系统是基于SSH框架实现的,提供了完整的源代码,可以直接运行,便于开发者学习和参考。 **...

    struts1+spring+hibernate整合所用全部jar包

    Struts1、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。这里我们主要探讨这三者整合时所需的核心jar包以及它们的功能。 ...

    SSH(Struts+Spring+Hibernate)结合项目简单实例

    SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...

    struts2+spring+hibernate Demo

    Struts2+Spring+Hibernate(SSH)是一种经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这三个框架的结合提供了模型-视图-控制器(MVC)架构、依赖注入(DI)以及对象关系映射(ORM)的强大...

    Ajax(DWR) + Spring + Hibernate + Struts整合登陆注册

    Ajax、Spring、Hibernate和Struts是Java Web开发中的四大核心技术,它们各司其职,共同构建了一个高效、灵活且功能强大的后端架构。这个小例子将这四个框架整合在一起,用于实现一个登录注册系统,提供了从客户端到...

    struts+spring+hibernate

    整合过程包括配置各个框架的XML配置文件,如Struts的struts.xml、Spring的applicationContext.xml和Hibernate的hibernate.cfg.xml,以及创建对应的Action、Service、DAO层。 整合SSH的优点在于: 1. **模块化**:...

    struts + hibernate + spring demo

    Struts、Hibernate和Spring是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出高效、松耦合的企业级应用。这个"Struts + Hibernate + Spring demo"是一个示例项目,展示了这三个框架如何协同工作...

    struts+spring+hibernate集成说明(英文原版)

    Struts的Action可以通过Spring的依赖注入获取Service层的对象,而Service层则通过Hibernate操作数据库。 在实际项目中,通常会使用Spring的DispatcherServlet作为前端控制器,接收请求并分发到Struts的Action。...

    struts+spring+hibernate开发 注册小实例

    Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们的组合通常被称为SSH(Struts、Spring、Hibernate)。这个“struts+spring+hibernate开发 注册小实例”是为初学者设计的一个教程,目的是帮助他们快速...

    Struts+Spring+Hibernate快速入门

    Struts+Spring+Hibernate 整合是开发Java Web应用程序的一种常见模式,也称为SSH框架。这个框架组合提供了从前端到后端的完整解决方案,适用于构建三层架构的应用程序。以下是关于这个话题的详细说明: 1. **Struts...

    Spring2.5.3+Hibernate3.2+Struts2.0.11整合.

    1. 配置Spring:设置Bean定义,包括Hibernate的相关组件如SessionFactory、TransactionManager等,以及Struts2的Action和Service。 2. 集成Hibernate:配置Hibernate的主配置文件(hibernate.cfg.xml),定义数据源...

    struts2+spring+hibernate+mysql(eclipse)整合增删改查

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合通常被称为SSH整合,是构建企业级应用的一种常用技术栈。本项目是基于Eclipse集成开发环境,结合MySQL数据库实现的一个基础的增删改查功能。接...

    Struts2+spring+hibernate框架

    Struts2负责控制层,Spring管理业务逻辑和服务层,而Hibernate则作为持久层框架处理数据库交互。下面将详细阐述这三个框架的主要功能和相互配合的方式。 **Struts2**: Struts2是MVC(Model-View-Controller)设计...

Global site tag (gtag.js) - Google Analytics