基于Hibernate 的网上交易平台的数据操作层实现

2012-08-16 06:30刘于亮
科技视界 2012年11期
关键词:表示层特价架构

刘于亮

(广州港新沙港务有限公司 广东 广州 523147)

1 项目概况

服务器操作系统Windows 2003 server, 数据库系统具有跨平台的可移植性。 客户端Windows XP 等WINDOWS 系列操作系统。 数据库采用SQL Server2000 数据库。 采用B/S 结构,构造安全、稳定、快速的软件平台。系统采用Java 编程,生成真正的可执行代码。

整套系统基于组件——容器模型,采用分层架构。 数据库服务器——业务逻辑——Web 服务器——用户界面。 分层清晰,各层功能相对独立,完整定义本层所需功能,形成一套子系统,并向其他邻接层提供函数接口。 系统可维护性、可扩展性极好。

三层架构中表示层使用JSP 网页和Struts 技术框架。 业务逻辑层使用Spring 的一小部分功能做容器支持。 在数据操作层上使用Hibernate 实现。

2 系统的概要分析

网上交易平台包含的模块有:店铺管理,包括新开店,修改店(添加、删除、修改店铺商品);商品管理,包括商品购买、订单、商品分类等等;用户管理,包括用户资料、身份、用户等级、用户收藏等等;特价事件,一段时间内一部分商品特价出售;搜索,保留所有用户的搜索记录;新闻,随时更新交易平台新闻。 其中特价事件和查询搜索是节选出来将要具体阐述的两个模块。

2.1 特价事件的功能介绍

该模块实现一段事件的某些商品的进行特价销售。 主要实现功能如下:

2.1.1 设定、修改、删除、查询特价。

2.1.2 选择货类编入特价事件中。

2.2 查询搜索的功能介绍

该模块保留一定量的用户对商品的查询记录。 主要实现功能如下:

2.2.1 如没有该关键字记录,则增加记录。

2.2.2 如有该关键字记录,则修改记录的搜索次数。

2.2.3 当新增一个记录,则删除最后一项记录。

3 系统的开发结构

在系统设计过程中, 采用三层结构模式以使表示逻辑、业务逻辑和数据逻辑分离, 以构建一个具有良好的可靠性、可重用性、可扩展性和可维护性的系统。 下图为系统的架构和技术框架的结构图。

图1 网上交易平台的架构和技术框架的结构图

以上流程,说明在三层架构下,一个完整的页面是怎样生成的,数据是怎么流转的。 例如,在主页看到一个特价事件的页面,然后点击,就会看到一个此特价事件下的所有商品列表的页面。

A 首先, 从表示层中的JSP 主页中的特价事件点击链接里面得到该特价事件的ID, 此ID 将会根据Struts 配置文件的ActionMapping 指向传到对应的action 中。

B 该action 在收集了所需要的数据,也就是特价事件ID后,由业务逻辑层讲具体事务对象化成各类JavaBean,并调用数据操作层提供的接口, 调用getWareByPromotionEventID(ID)方法,特价事件ID 为参数作传递,该方法的功能就是根据特价事件ID 而得到对应此特价事件ID 的所有商品,返回的是商品ware 的集合wareList。

C、D 在数据操作层使用数据操作层技术框架实现了get-WareByPromotionEventID(ID)这个方法,对数据库进行操作,并得到了wareList。

E 如果此操作层方法没有错误, 那么在action 中调用此方法所返回的结果就是所需要的商品集合wareList。 并且由业务逻辑层支持和收集,并传到表示层中。

F 接着action 在接收到想得到的结果, 也就是wareList后,根据配置文件的ActionForward 指向将wareLsit 传递到指定的表示层JSP 页面中。 最后写一个循环,调用Struts 标签,方便地将每个ware 实体想显示的属性在页面中显示出来,例如商品名称,简介,价钱等等。

从以上说明可以见到,三层架构既相互独立又存在数据交流。JAVA 的编程理念就是面向对象,因此,使用J2EE 的三层架构下,一般情况下,查询操作返回的都是实体与实体的集合。 而另外增删改的操作则是返回是否操作成功的true 或者false,而有些技术框架会提供异常抛出机制,能自动抛出异常。

由于三层架构相对独立,如上例所说明的那样,在数据操作层中,需要做的就是根据业务逻辑层给出的根据什么和得到什么,来写出DAO 方法去实现。 因此,在比较数据操作层技术的时候,可以抛开表示层与业务层的业务流程,专注于数据操作层的方法实现上。

4 数据库需求

经过需求分析后, 在详细设计时定下了以下表及其作用。 其他的表与将要模拟实现的部分没有关系,因此不列出了。

品牌表,即商品对应的牌子;一级分类表,与其他3 级分类都是一对多;一级分类与品牌是多对多的关系,需一个中间表;二级分类表,与一级分类是多对一,与三四级分类是一对多;新闻表,记录易家购的所有新闻;特价事件表,每一段时间都会有一批商品进入特价期间,特价事件就是一批特价商品的集合,与一级分类、商品都有关联;搜索记录表,记录所有商品的搜索记录;商品表,记录所有商品信息,与四个分类,品牌都有关联;商品种类表。

5 具体实现

5.1 数据实体范例

PromotionEvent 的对象定义:

5.2 对数据库的DAO 操作范例

Hibernate 的实体操作:

以上代码可以看到,只要设定好对数据库的操作,执行以后,返回的就是所需要的并且已经赋值好的实例。 这是由于之前已经配置好了对象与数据表的映射,所有对数据库操作后所返回的数据,Hibernate 会自动将其赋予对应对象的对应属性中,这样,能省去大量冗余的代码,程序看起来变得简洁,对于开发与修改来说,是相当大的帮助。 就算需要临时对promotionEvent 这个实体增加广告名称属性advName,那么就要在对数据库,对象的定义进行修改之后,以后的每次的操作都能得到已经拥有advName 属性的promotionEvent 实体。

如果使用了Spring 对Hibernate 的支持,程序更是简洁。下面的程序就使用了Spring 容器支持功能后的实体操作。

对Search 表的操作:

猜你喜欢
表示层特价架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
LSN DCI EVPN VxLAN组网架构研究及实现
ASP.NET三层构架解析
基于SSH框架科研管理系统的设计
一种基于FPGA+ARM架构的μPMU实现
眼镜店特价促销实战攻略