龙源期刊网 http://www.qikan.com.cn
基于Spring+SpringMVC+hibernate框架的Web系统设计与实现
作者:朱运乔
来源:《电脑知识与技术》2018年第26期
摘要:首先对Spring+SpringMVC+hibernate框架模型作了简单介绍,对其结构组成和基本工作原理进行了简要分析。然后以一个商品出库系统模块的为例,展示了如何使用
Spring+SpringMVC+hibernate框架搭建层次清晰的程序结构。并给出了商品出库模块在该框架下的功能实现和关键代码。
关键词:Spring;SpringMVC;hibernate;Web系统;功能实现
中图分类号:TP311.52 文献标识码:A 文章编号:1009-3044(2018)26-0066-03 1 概述
当前,JavaWeb开发技术繁多,但为开发团队选择一款优秀的框架非常重要,一个好的框架决定了开发团队的软件开发周期、开发成本、维护成本甚至于软件的生命周期。在选择一个可行的方案时,一般要从稳定成熟性、可扩展性及灵活等多方面综合考虑。本文将以一个商品出库模块为例,详细介绍由Spring、SpringMVC、hibernate几种技术构成的软件架构的搭建技术要点和以此为平台的功能模块实现过程。 2 Spring+SpringMVC+hibernate技术架构
Spring+SpringMVC+hibernate不同于之前流行的Spring+struts2+hibernate(ssh2)技术架构,该架构是将后者最重要的前端控制部分struts2(mvc)替换成用SpringMVC,同时将Spring和hibernate多种开源技术有机结合在一起,从而构建出一个健壮可靠、高效成熟的JavaWeb应用程序技术架构。 2.1 SpringMVC简介
SpringMVC是当前非常流行的一种MVC框架,而MVC是我们开发WEB应用程序的通用框架,MVC的核心思想是业务逻辑和业务数据呈现相分离,使程序分层、分工合作,既相互独立,又协同合作。其中:
M(Model):业务逻辑的描述和业务数据的信息表示。 V(View):为用户呈现数据的页面。
龙源期刊网 http://www.qikan.com.cn
C(Controller):调用模型层(Model)的业务逻辑产生合适的数据模型,同时传递数据模型给视图层(View)呈现给用户。
Spring MVC是一个设计优良的MVC框架,是Spring下的一个开源项目,可以跟Spring无缝接合,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高,实现了对Struts 2的超越。现在越来越多的开发团队选择了Spring MVC。 2.2 Hibernater的作用
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以使用对象编程思维来操纵数据库。 2.3 Spring框架的作用
Spring框架是系统的核心部分,系统各部分的整合由它来完成。Spring提供的Ioc容器是业务逻辑组件和DAO组件的工厂,它负责生成并管理这些实例。
借助于Spring的依赖注入,各组件以松耦合的方式组合在一起,组件与组件之间的依赖正是通过Spring的依赖注入管理的。其Service组件和DAO对象都采用面向接口编程方式,从而降低了系统重构的成本,极好地提高了系统的可维护性、可扩充性。
事务管理采用Spring的声明式事务框架,通过声明式事务,而只需要容器中加以配置,在业务逻辑层中加上相应的注解即可,使业务组件只专注于业务本身,从而简化了开发。 一个典型的使用了Spring+SpringMVC+hibernate架构的应用,其结构如下图所示。 由图所示,SpringMVC实现整体结构及前端控制,Hibernate主要负责数据访问,Spring负责将各大组件粘合在一起组成一个完整的软件架构。 3 系统实现
下面以一个商品出库模块为例来展现Spring+SpringMVC+hibernates架构的具体设计与实现。
3.1 功能描述
商品出库模块首先由商品出库界面(outwarehouse.jsp)提交出库表单请求
(/outwarehouse)到控制器,请求方法根据出库表单数据调用业务逻辑层,由业务逻辑层返回的信息决定返回哪个视图:如出库失败,返回error.jsp显示出错原因;如出库成功,返回
龙源期刊网 http://www.qikan.com.cn
showResult.jsp页面视图,展示成功出库的商品情况。通过showResult.jsp页面可进一步向控制器提交请求(/history),从而获取所有商品的出库历史记录。 3.2 数据库设计
数据库涉及到两个表:商品表(ShopInfo),出库历史表(Storage)。 3.3 关键代码
关键代码涉及四个包:
bean包,主要包含有两个ORM对象(ShopInfo.java、Storage.java)。 dao包,主要包含两个DAO类(ShopInfoDAO.java、StorageDAO.java)。 service.impl包及子包,主要包含业务逻辑接口实现类(ShopInfoService.java、StorageService.java)。
controller包,主要包含控制器(OutwareHouseController.java)。
代码实现过程中用了注解方式创建和注入javabean,下面主要展示主要代码及相关注解。 1) ORM对象ShopInfo.java代码及注解如下: @Entity //实体注解说明
@Table(name=\) //映射表
public class ShopInfo implements java.io.Serializable { @Id //标识列
@GeneratedValue(strategy=GenerationType.IDENTITY) //标识值自动生成方式 private Integer id; /*一对多关系注解*/
@OneToMany(cascade={CascadeType.ALL},mappedBy=\,fetch=FetchType.LAZY)
private Set storages = new HashSet(0);