關系數據庫映射(架構模式)
解決的問題
領域驅動邏輯訪問數據庫的方式(選擇的設計影響深遠,難以重構。同時,領域邏輯的設計也會對這個選擇產生重大影響)
基于下面原因,把SQL訪問從領域邏輯中分離出來,放到獨立的類中:
1. 程序開發者對SQL的理解有限,更好的方式是以程序開發語言的機制來訪問。
2. DBA能看到SQL語句,才能更好的調整和組織索引。
分離方式:
1.一個表建立一個類,訪問數據庫則使用這個Gateway來訪問。Gateway又包含兩種方式
a) Row Data Gateway(即每行數據對應一個class實例),這種方式更適合面向對象的思考方式。
b) Table Data Gateway(即每個表對應一個實例,與記錄集非常匹配),關于這種方式,可以自行查看相關資料。
2. 如果領域邏輯比較簡單采用上面方式當中的一種就可以了,如果領域邏輯比較復雜,Data Mapper(數據映射器)才是我們需要的,Data Mapper能夠隔離Domain對象和數據庫。
以后一系列文章我將以行為模式(Behavioral Patterns)、結構模式(Structual Patterns)、元數據映射模式(Metadata Patterns)三方面來進行模式,以Hibernate作為實例進行分析。
關于三個類型的模式,可以參考:Patterns of Enterprise Application Architecture (author:Martin Fowler)
參考資料:Patterns of Enterprise Application Architecture (author:Martin Fowler)