孫衛琴《精通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)
一般化指的是類之間的繼承關係。