Struts+Spring+Hibernate 的架构整合

本文详细阐述了SSH框架(Struts、Spring、Hibernate)如何在系统开发中进行整合与协作,通过分析各自的优势与不足,将这三个架构有效结合。重点介绍了Struts作为表示层框架、Spring作为业务逻辑层框架、Hibernate作为数据持久层框架的角色及其工作流程。通过集成SSH框架,实现了系统整体架构和局部复杂业务模型的低耦合性,提高了灵活性与可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文摘自:http://www.paper.edu.cn/  一种基于Struts+Spring+Hibernate的整合 付强,黄孝建 北京邮电大学,北京 100876

 

 

一. SSH框架的整合

 

        综合分析了Struts, Spring 与Hibernate 各自的优点与不足,将这三个架构有效整合在一起,Struts 框架有成熟的标签库,所以Web 层主要由Struts 框架实现;而Spring 框架同Struts 框架能够完美的结合,并且在事务管理和依赖注射方面有着独到之处,因此主要用于业务逻辑层;在数据持久层方面主要采用Hibernate,实现O/R Mapping,对JDBC 进行了轻量级的对象封装, 建立Java 对象模型的持久对象。

        struts+spring+hibernate 应用开发框架利用Struts 架构作为系统的整体基础架构,它负责了MVC 的分离,而在Struts 架构的模型部分,利用Hibernate 架构来提供持久层支持,业务层用Spring 支持。具体做法是用面向对象的分析方法根据需求来提出一个模型,将这些模型采用Java 语言实现出基本的Java 对象,然后写出基本的DAO 接口,并给出Hibernate 的DAO 实现,采用Hibernate 架构实现的DAO 类来实现Java 类与数据库之间的转换和访问,然后由Spring 来完成业务逻辑。让Struts 负责降低系统总架构的藕合性,让Spring 负责复杂的业务逻辑处理,让Hibernate 负责降低业务模型部分的开发难度。结合之后得到的好处是采用这个集成架构开发出来的信息系统无论是在整体架构上还是在局部的复杂业务模型中都有了更低的祸合性,它们的灵活性与可维护性也得到了提高,从而消除了单独使用这些架构开发系统的不足。其整合后架构图如下图所示:

 

二. SSH框架的工作流程分析

 

        Struts 作为一个表示层框架,用户在表示层上的一个操作看起来只是作用在表示层,但实际上要完成页面上的一个操作还必需依赖于业务逻辑层和数据持久层的帮助,如表示层页面显示所需要的数据就需要业务逻辑层判断需要让数据持久层提取什么样的数据,同时数据持久层在提取或者存储数据时又需要业务逻辑层框架Spring 来实现事务控制、异常处理等。所以用户在表示层页面上的一个操作就会涉及到这三个框架的一个整体协作过程下面将详细介绍互协作的过程。

        首先,用户在页面上执行一个动作,触发Struts 框架接受这个动作,并迅速在自己的配置文件(Struts-confif.xml)中查找该动作所匹配的Action,找到匹配action 之后,就查看它所有的配置模块中的属性validate 是否为true,若是真则要启动数据验证框架对属性name 所指定的ActionForm 进行数据验证。当验证通过或者属性值为fasle,则使用属性type 所指定的Action 类来处理。在本系统中由于要和业务逻辑层的框架Spring 整合,所以在配置文件中所使用的Action 类都是使用的Spring 框架中所封装的代理DelegatingActionProxy,使用该代理类可以使得业务流程的控制权由Struts 转移给Spring。

        当系统调用Spring 的代理类时,系统的控制权由Spring 框架获得,之后就会在自己框架的配置文件(applicationContext.xml)中查找第一步中Struts 框架所实际调用的Action 类。此时就可以使用Spring 的特性依赖注入(IOC) 向Action 自动注入一个继承了HibernateDaoSupport 类的userDAO 类型实例,该实例由用户编写,里面封装了系统所需要的各类处理业务逻辑的方法以及获取和存储数据的代码。同时在编写该实例中关于操作数据的代码时就会启Hibernate 框架,完成数据持久化的功能。而且Hibernate 框架可以使用在Spring 框架中封装的HibernateDaoSupport 类所拥有的一些方法,这样既简化了持久化代码的编写,同时由于整个流程由Spring 框架控制,该框架就类似于一个简化的EJB 容器,就可以使用它面向方面的编程(AOP)的特性实现Struts, Hibernate 有关事务以及安全的控制,也可以利用它依赖注入(IOC)的特性动态的加载数据源,完成Hibernate 的初始化工作。最后当匹配的人ction 执行完成之后,又返回相应的页面呈现给用户,此时系统控制权又转移给Struts。

        综上所述可以看出Struts 通过同Spring 的融合,方便的将自己的业务逻辑交给Spring来处理,并借助Spring 的控制,使的数据处理的正确性大大提高。Spring 框架在整各系统流程控制中起到了重要的作用,它就类似一个简化的轻量级的EJB 容器,拥有EJB 容器相同的功能,但是实现这些功能所需要的资源和费用却大大减少,效率却显著提高。Hibernate在这个框架容器的控制下实现了数据持久层的功能,同时由于处在这个框架容器中,还借助该框架的特性实现了事务以及安全的控制。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值