框架模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
35
ORM介绍
ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框架 的基本特征:完成面向对象的程序设计语言到关系数据库的映射。基 于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性 ,又可利用关系数据库的技术优势。
目前ORM的产品非常多,比如Apache组织下的OJB,Oracle的TopLink, JDO,JPA等等。
8
框架模式
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该 问题的解决方案核心。通过这种方式,可无数次地使用那些已有的解决 方案,无需重复相同工作。 框架模式也有许多,例如MVC、MTV、MVP、CBD、ORM等等。
9
MVC架构
Java Web开发的三阶段之一:不分层阶段
数据库连接、 SQL语句
的域模型和关系数据模型之间的映射。
19
持久层的重要性
在过往三层架构中,业务逻辑层不仅负责业务逻辑,而且直接访问数据库 ,提供CRUD操作。为了把数据访问细节和业务逻辑分开,我们把数据访问 作为单独的持久层。
持久层的目标:
➢ 代码可重用性,能够完成所有的数据库访问操作。 ➢ 如果需要的话,能够支持多种数据库平台。 ➢ 具有相对独立性,当持久层的实现发生变化,不会影响上层的实现。
20
ORM持久化示意图
21
软件模型
在软件开发领域,模型用来表示真实世界的实体。
➢ 概念模型 ➢ 关系数据模型 ➢ 域模型 ➢…
22
概念模型
在建立模型前,首先要对问题域进行详细的分析。确定用例,接下来就可 以根据用例来创建模型的概念。概念模型用来模拟问题域中的真实实体。
概念模型描述了每个实体的概念和属性,以及实体之间的关系。在这个阶 段,并不描述实体的行为。
➢ 一个或多个表 ➢ 表的所有索引 ➢ 视图 ➢ 触发器 ➢ 表于表之间的参照完整性
24
域模型
域模型在软件设计阶段创建。 在概念模型的基础上创建域模型,域模型是面向对象的。也被称为设
计模型。由以下内容组成:
➢ 具有状态和行为的域对象。 ➢ 域对象之间的关系
25
域对象
域对象,即Domain Object。是对真实世界的实体的软件抽象。 还可以叫做业务对象 Bussiness Object。 域对象可以代表业务领域中的人、地点、事物或概念
18
MyBatis / Hibernate
连接Java应用程序和关系数据库的中间件。 对JDBC API进行了封装,负责Java对象的持久化。 在分层软件架构中位于持久层,封装了所有数据访问细节,使业务逻
辑层可以专注于实现业务逻辑。 它是一种ORM(Object – Relation Mapping)的工具,能够建立面向对象
调用/ 返回
1. 代码分层比较清晰 2. 可读性较好
业务逻辑代码
Java文件结构 调用
页面逻辑 S跳e转rvlet文件结构 跳转
HTML
调用/ 返回
3. 页面逻辑、业务逻辑、数 据处理都可重用,能轻易 替换其中层。
4. JSP文件较小 5. 代码后期维护容易 6. 较容易定位错误
JSP文件结构
12
MVC模式
}
表的定义
create table User ( name varchar(255) not null , password varchar(255), ………. primary key (name)
)
对象 类 属性 一对多 / 多对一 多对多 继承
关系数据库 表 字段 外键 中间表(联合主键) 单表策略(识别列) 与 多表策略(主键关联)
6
框架概述
软件框架按其表现形态可分为: (1)白盒框架。支持白盒复用,大型的类库或子程序库通常均提供白 盒框架来协助复用。 (2)黑盒框架。支持黑盒复用。中间件集成框架一般为黑盒框架。
7
框架概述
软件体系结构与框架的区别与联系如下:
(1)呈现形式不同。体系结构的呈现形式是一个设计规约,而框架则是程序 代码。 (2)目的不同。体系结构的首要目的大多是指导一个软件系统的实施与开发 ;而框架的首要目的是为复用。因此,一个框架可有其体系结构,用于指导 该框架的开发,反之不然。 (3)有种特殊的体系结构,DSSA(领域特定体系结构)其首要目的也是为 了复用。 (4)有个叫体系结构风格的东西,将它用程序代码实现后就成了Corba、 COM之类的东西,它们俩叫体系结构框架,也叫中间件集成框架,又有人愿 意叫它对象中间件。
(1)子程序的库越来越庞大以至于其使用人员难以掌握; (2)大多数类的粒度很小,其自身不能完成所有有用的功能。
4
框架概述
软件框架中至少包含以下组成部分:
(1)一系列完成计算的模块,称为组件; (2)组件之间的关系及交互机制; (3)一系列可变点(热点、或者称为调整点); (4)可变点的行为调整机制。
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的 存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关 系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等 等。
33
O/R Mapping 介绍
对象-关系映射是一门非常实用的工程技术,它实现了应用中的对象到 关系数据库中的表的自动的(和透明的)持久化,使用元数据描述对 象与数据库间的映射。
➢ 创建概念模型的目的是帮助更好地理解问题域。 ➢ 概念模型清楚地显示了问题域中的实体。 ➢ 概念模型在软件分析阶段创建。
23
关系数据模型
到目前为止,关系数据库仍然是使用最广泛的数据库,它存储的是关系数 据。
关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据 的静态结构。由以下内容组成:
5
框架概述
软件框架按其应用的范围可分为: (1)系统基础设施框架。用于简化系统级软件的开发,如操作系统、用 户界面、语言处理等,典型例子为MacApp、Microsoft’s MFC等。 (2)中间件集成框架。用于组装分布式应用和组件,典型例子为 Microsoft’s DCOM、JavaSoft’s RMI、OMG’s CORBA等。 (3)企业应用框架。用于各类应用领域,如电信、制造业、金融等。
一般化
➢ 一般化指的就是类之间的继承关系。
31
持久化
域对象的持久化概念
➢ 只有实体域对象才需要持久化。 ➢ 狭义的理解:“持久化”仅仅把域对象永久保存到数据库中。 ➢ 广义的理解:“持久化”包括和数据库相关的各种操作:
CRUD(create,read,update,delete)
32
持久化
访问数据库代码与业务逻辑混杂在一起带来了很多问题,这样的程序 设计严重限制了程序的可扩展性和适应性,所以有必要要把涉及数据 库操作的代码分离出来与业务逻辑分离。就形成了所谓“持久层”的 概念。
15
MVC框架
J2EE的MVC框架
➢ Spring ➢ Struts ➢…
16
JDBC的不足之处
Java是面向对象的,sql是面向关系的。两者混在一起,程序员不能完 全的运用面向对象的思维来编写程序。
业务逻辑和关系数据模型绑定,如果关系数据模型发生变化(如更改表 结构),就必须手动修改程序里所有相关的sql语句,增加了维护软件的 难度。
状态查询
模型 Model
封装应用程序状态 响应状态查询 应用程序功能 通知视图改变
状态改变
通知改变
视图 View
解释模型 模型更新请求 发送用户输入给控制器 允许控制器选择视图
视图选择 用户请求
控制器 Controller
定义应用程序行为 用户动作映射成模型更新
选择相应的视图
13
J2EE Model2
27
域对象之间的关系
关联 (Association) 依赖 (Dependency) 聚集 (Aggregation) 一般化 (Generalization)
28
域对象之间的关系
关联
➢ 关联指类之间的引用关系,是实体域对象之间最普通的一种关系。 ➢ 可以分为一对一,一对多和多对多关联。 ➢ 如果类A与类B关联,那么被引用的类B将被定义为类A的属性. ➢ 单向和双向关联。
29
域对象之间的关系
依赖
➢ 指类之间的访问关系。如果类A访问类B的属性或方法,或者类A负责实例化类B ,那么可以说类A依赖类B。和关联不同,无需把类B定义为类A的属性。
➢ 依赖关系在实体域对象之间不常见,但是过程域对象往往依赖实体域对象,因 为过程域对象会创建实体域对象,或者会访问实体域对象的属性或方法
ORM的出现使OO语言可以使用更为自然的方式访问关系数据库
34
ORM介绍
ORM的全称是Object/Relation Mapping,即对象/关系映射。ORM框 架可作为应用程序和数据库的桥梁。
面向对象程序设计语言与关系数据库发展不同步时,需要一种中间解 决方案,ORM框架就是这样的解决方案。
36
O/R Mapping 的优点
提高生产率(Productivity) 可维护性(Maintainability) 更好性能(Performance) 可移植性(transplant)
37
对象与表如何对应
对象的定义
public class User { private String name; private String password; private List address; ………
30
域对象之间的关系
聚集
➢ 指的是整体与部分之间的关系。在实体域对象之间和常见。 ➢ 例如: ➢ public class Customer{
private Set Orders = new HashSet(); } ➢ 在Customer类中有一个Orders集合,它存放被聚集的Order对象
第9章 框架模式
软件工程系
软件复用与组件开发
本章内容
框架 框架模式 MVC ORM
2
框架概述
软件框架是面向领域(如 ERP、计算领域等)的、 可复用的“半成品”软件,
框架实现了一个领域的共 性部分,并提供了一些定 义良好的可变点以保证灵 活性和可扩展性。
3
框架概述
以子程序和类为单位的软件复用出现了很多的不足之处:
26
域对象
域对象分为以下几种: ➢ 实体域对象:实体域对象可以代表人,事物,地点或概念,可以用包含状态和 行为的JavaBean描述。 ✓采用JavaBean形式的实体域对象也称为POJO。为了使实体域对象和关系数 据库中的表关联,可以为每个实体域对象分配唯一的OID,OID则是关系数 据库中的主键,一个实体域对象对应关系数据库中的一条记录。 ➢ 过程域对象:过程域对象代表应用中的业务逻辑或流程。 ✓它们通常依赖于实体域对象。它们可以做为常规的JavaBean,具有管理和 控制应用的行为。 ➢ 事件域对象:代表应用中的一些事件(异常,警告,超时)。
如果sql语句有语法错误,编译是不能检查这种sql语句错误,只有运行 时才能发现错误,增加了程序的调试难度。
数据库移植问题。
17
Java方面的常见的数据库操作技术
JDBC mybatis 对sql语句进行了一个轻量级的封装 Hibernate 致力于持久化标准 EJB (JPA)基于容器的Java Persistence API JDO
HTML模板 JSP文件结构
1. 代码较混乱 2. 可读性较差 3. Servlet部分可重用,但其他
代码不可重用。 4. HTML模板被独立出来 5. 代码后期维护较困难 6. 经常无法定位错误
11
MVC架构
Java Web开发的三阶段之一:完全分层阶段
数据库连接、 SQL语句
Java文件结构
JSP+Servlet+JavaBean的Model2架构
14
MVC的优劣
优势
➢ 体现分层,降低了耦合,结构清晰 ➢ 代码可适用性提高 ➢ 代码可维护性增强
劣势
➢ 速度慢 ➢ 基于请求/响应的工作方式导致View与Controlห้องสมุดไป่ตู้er联系紧密 ➢ Model的数据变化不能自动反应到View ➢ 三层分离导致测试困难
业务逻辑代码
页面逻辑 HTML模板 JSP文件结构
1. 代码混乱 2. 可读性差 3. 代码重用性差 4. JSP文件较大 5. 代码后期维护困难 6. 经常无法定位错误
10
MVC架构
Java Web开发的三阶段之二:半分层阶段
数据库连接、 SQL语句
业务逻辑代码
页面逻辑 Servlet文件结构 跳转
相关文档
最新文档