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