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