孙卫琴《精通Hibernate:Java对象持久化技术详解》 电子工业出版社
软件分析阶段: 概念模型
软件设计阶段: 域模型(面向对象)<-----对象关系映射------>数据模型(面向关系)
1. 概念模型
E-R图
2. 关系数据模型
一个或多个表
表的所有索引
视图
触发器
表与表之间的参照完整性
3. 域模型
构成域模型的基本元素是域对象(Domain Object),域对象还可叫做业务对象(Business Object,BO)。域对象可以代表业务领域中的人、地点、事物或概念。域对象分为以下几种。
1)实体域对象
采用JavaBean形式的实体域对象也称为POJO(Plain Old Java Object,简单的Java对象)。
2)过程域对象
如BusinessService
3)事件域对象
域对象之间的关系:
1)关联(Association)
关联指的是类之间的引用关系,关联可分为一对一、一对多和多对多关联。
public class Order { private Long id; private String orderNumber; private double price; // ****** private Customer customer; …… }
关联还可以分成单向关联和双向关联。
2)依赖(Dependency)
依赖指的是类之间的访问关系。如果类A访问类B的属性或方法,或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无需把类B定义为类A的属性。依赖关系在实体域对象之间不常见,但是过程域对象往往依赖实体域对象,因为过程域对象会创建实体域对象,或者会访问实体域对象的属性及方法。
3)聚集(Aggregation)
聚集指的是整体与部分之间的关系,例如人与兽就是聚集关系。
public class Person { private Set hands = new HashSet(); …… }可见,聚集关系和关联关系在类的定义上有相同的形式,不过两者有不同的语义。对于聚集关系,部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。而对于存在关联关系的两个类,可以允许每个类的对象都单独存在,例如雇员和雇主就是这样的关联关系。
4)一般化(Generalization)
一般化指的是类之间的继承关系。