摘要:如果數據非常類似,可把數據從內存方案中轉化到邏輯數據存儲方案,映射從邏輯數據存儲方案到實際物理存儲方案第二部包含區別使用元數據元數據映射基于把映射濃縮到元數據文件的方法。元數據文件詳細描述數據庫中列如何映射到對象的域。
關系數據庫之所以取得成功,最重要的原因之一就是SQL的存在,它是數據庫通信標準語言。
1. 架構模式: 驅動領域邏輯訪問數據的方式: SQL語句嵌入在程序設計語言中; 行數據入口、表數據入口:把SQL訪問從領域邏輯中分離出來,并把它放到獨立的類中(讓它們以數據庫中的表結構為基礎,每一個數據表對應一個類),這些類為數據庫建立了一個入口;
活動記錄:領域模型簡單時,每個領域對象負責對應數據庫的表的存取過程
數據映射器:領域模型復雜時,處理數據庫和領域模型之間的所有存取操作,并且允許雙方都能獨立變化
面向對象數據庫:領域模型不管有多復雜,均可使用(因為風險,使用不多)。主要好處在于能夠提高生產率!
2. 行為問題: 1)所謂行文問題,就是如何讓個中對象從數據庫中讀取出來以及存到數據庫中 2)工作單元:充當數據庫映射的控制器,會跟蹤所有從數據庫中讀取的對象以及所有以任何形式修改過的對象,并將更新提交到數據庫(用來解決內存對象和數據庫中數據同步的問題)
3)標識映射:在標識映射里記錄讀取的每一行,防止同一對象重復加載
4)延遲加載:減少領域模型每次讀取的數據
3. 讀取數據: 1)查找器:讀取數據的時候,可以把讀取數據的方法看做一個查找器
2)查找器對象:如果數據庫交互類基于表,把插入和更新操作也綁定在查找器方法中;
如果數據庫交互基于行的類,創建獨立的查找器對象(每個查找器類都有很多封裝了SQL語句的方法,當執行查詢操作時查找器對象返回一個適當的基于行的對象集合)
3)讀取數據性能經驗法則:如果需要,盡量一次讀取多行;
需要多個表數據時,使用Join
4. 結構映射模式: 1)關系的映射: 解決關系表間關聯關系和對象間引用關系的方法:通過對象中的一個標識域來保持每個對象的關系特性,并且通過查找這些值來保持對象引用和關系鍵之間的相互映射
對于一些小的值對象(比如日期范圍和錢),不需要用標識域來把對象間引用變為外鍵(不應該描述成數據庫中它們自己的表),而應去除值對象中所有的域,以嵌入值方式把它們嵌入到關聯對象中
也可以通過序列化LOB將一組對象存儲為表中的單個列
2)繼承: 單表繼承:為繼承體系層次中的所有類建立一個表(修改容易并且避免join,但每一行都必須為每種可能地子類博阿六一些列,浪費空間)
具體表繼承:為繼承體系層次中每個具體類均建立一個表(避免join操作,允許從一個表中獲取一個對象,但改變起來比較困難,如對超類的任何改變都不得不改變所有的表和映射代碼)
類表繼承:為繼承體系層次中每個類均建立一個表(需要多個join操作來載入一個對象,通常
會損失性能)
以上3種模式,需要考慮自己的環境和偏好(Martin傾向于:使用單表繼承,用另外2個模式輔助來幫助解決不可避免的不相關和無用列問題)
5. 建立映射: 自己選擇數據庫方案:使用經典數據庫設計技術圍繞數據來設計表,使用行數據入口或者表數據入口把SQL從領域邏輯中剔除
使用已存在數據庫方案:簡單的領域邏輯可創建行數據入口或者表數據入口類來模擬數據庫,并在此之上創建領域邏輯。復雜的逐步建立領域模型并包含數據映射器
對于多個數據源:建立多個映射層,每個數據源一個。 如果數據非常類似,可把數據從內存方案中轉化到邏輯數據存儲方案,映射從邏輯數據存儲方案到實際物理存儲方案(第二部包含區別)
6. 使用元數據:元數據映射基于把映射濃縮到元數據文件的方法。元數據文件詳細描述數據庫中列如何映射到對象的域。如:
數據庫連接池
8. 其他問題:select * from 的問題
多使用預編譯好的靜態SQL
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30018.html
摘要:工作單元用于維護受業務事務影響的對象列表,并協調變化的寫入和并發問題的解決。工作單元控制器工作單元控制所有數據庫的讀操作,一旦對象被讀取,將將它注冊為干凈的對象。 1. 工作單元 用于維護受業務事務影響的對象列表,并協調變化的寫入和并發問題的解決。如下: showImg(https://segmentfault.com/img/remote/1460000018095222?w=162...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
摘要:標識域外鍵映射關聯表映射依賴映射嵌入值序列化單表繼承類表繼承具體表繼承繼承映射器 1.標識域 (Identity Field) 2.外鍵映射 (Foreign Key Mapping) 3.關聯表映射 (Association Table Mapping) 4.依賴映射 (Dependent Mapping) 5.嵌入值 (Embedded Value) 6.序列化LOB (Seral...
摘要:推出數據集成服務,可輕松幫助用戶完成多源聚合。數據集成服務案例數據脫敏某教育企業,使用數據集成服務,將數據脫敏處理后,再交由內部其它部進行數據分析,提取數據的有效價值。既避免了敏感數據泄漏風險,又幫助企業更快更精準的決策。背景由于不同業務的數據存儲和應用需求不同,企業通常會將不同業務產生的數據分別存儲在獨立的數據庫中。隨著業務架構的不斷調整,以及受開發過程的影響,原先分開存儲的數據庫逐漸暴露...
閱讀 3305·2021-09-30 09:54
閱讀 3801·2021-09-22 15:01
閱讀 3109·2021-08-27 16:19
閱讀 2577·2019-08-29 18:39
閱讀 2162·2019-08-29 14:09
閱讀 632·2019-08-26 10:23
閱讀 1340·2019-08-23 12:01
閱讀 1869·2019-08-22 13:57