[圖解]企業應用架構模式2024新譯本講解22-標識映射

1
00:00:01,080 --> 00:00:04,710
我們來看一下標識映射這個模式

2
00:00:08,030 --> 00:00:10,110
它是屬于對象-關系

3
00:00:10,120 --> 00:00:11,150
行為模式

4
00:00:11,160 --> 00:00:13,890
就是說,在動態的時候

5
00:00:15,770 --> 00:00:17,230
訪問數據庫,加載

6
00:00:17,730 --> 00:00:22,150
或者說寫入數據庫等等的時候

7
00:00:22,810 --> 00:00:27,230
需要用到的一個行為的模式

8
00:00:27,240 --> 00:00:30,360
行為模式

9
00:00:30,370 --> 00:00:33,120
有這么幾個,標識映射是其中一個

10
00:00:35,670 --> 00:00:37,340
我們來看它的定義

11
00:00:38,100 --> 00:00:41,210
這個是很簡單的一個模式了

12
00:00:44,480 --> 00:00:45,680
在映射中

13
00:00:46,530 --> 00:00:49,780
在一個mapper里面保存

14
00:00:49,790 --> 00:00:51,460
每個已經加載的對象

15
00:00:52,290 --> 00:00:54,810
目的是確保每個對象只加載一次

16
00:00:57,110 --> 00:00:58,540
需要引用對象的時候

17
00:00:58,550 --> 00:01:00,340
通過映射來查找它們

18
00:01:01,360 --> 00:01:03,030
這里有個查找器

19
00:01:03,800 --> 00:01:05,500
映射,查找

20
00:01:09,380 --> 00:01:11,040
找到了就用

21
00:01:11,560 --> 00:01:13,060
找不到說明什么

22
00:01:13,500 --> 00:01:15,780
沒有加載,就要到數據庫里面去

23
00:01:16,620 --> 00:01:23,350
你看這里,沒找到,數據庫里面去拿

24
00:01:26,500 --> 00:01:30,980
再把它加載到map里面

25
00:01:31,650 --> 00:01:32,590
映射里面

26
00:01:34,740 --> 00:01:38,420
這里面有幾個要關注的點

27
00:01:38,510 --> 00:01:39,780
第一個,主鍵

28
00:01:42,230 --> 00:01:45,220
那么盡量都就用這種無意義代理主鍵了

29
00:01:45,230 --> 00:01:48,460
而且類型要一樣的

30
00:01:48,590 --> 00:01:50,660
一般類型要么是長整數

31
00:01:50,750 --> 00:01:53,680
要么是字符串

32
00:01:55,770 --> 00:01:56,770
類型一樣的

33
00:01:56,780 --> 00:02:02,280
就不要那種花里胡哨的主鍵,代理主鍵

1
00:00:00,570 --> 00:00:04,360
第二個問題就是這個,就是接口

2
00:00:04,370 --> 00:00:06,980
到底是這樣的顯式的接口

3
00:00:06,990 --> 00:00:08,220
還是通用的接口

4
00:00:10,860 --> 00:00:13,750
書里面是推薦的第一種了

5
00:00:14,660 --> 00:00:16,860
第一種,你就要寫很多個了

6
00:00:16,870 --> 00:00:20,660
有多少個表,多少個類

7
00:00:20,670 --> 00:00:22,710
你就搞多少個

8
00:00:22,970 --> 00:00:24,740
第二個只要一個就夠了

9
00:00:25,290 --> 00:00:27,020
而且還可以反復使用

10
00:00:27,030 --> 00:00:32,740
這個系統用了

11
00:00:32,750 --> 00:00:35,840
那下一個系統可以copy用都可以

12
00:00:38,020 --> 00:00:39,990
你只要改里面的數據就行了

13
00:00:40,750 --> 00:00:46,350
表名,主鍵,這個是硬寫在這里的

14
00:00:48,650 --> 00:00:50,090
那么如果這樣寫

15
00:00:50,100 --> 00:00:51,540
它就變成一個什么

16
00:00:51,550 --> 00:00:57,020
跟這個領域沒有關系的一個操作了

17
00:00:57,030 --> 00:00:59,860
而這個是把領域概念直接嵌到里面去了

18
00:01:02,480 --> 00:01:04,360
那么顯然你換一個系統

19
00:01:04,370 --> 00:01:07,080
換一個領域就沒有了,這就不能用了

20
00:01:08,890 --> 00:01:11,240
這只需要一個,這個要很多個

21
00:01:11,640 --> 00:01:15,050
但是書里面仍然是推薦這一種

22
00:01:15,420 --> 00:01:20,140
這種編譯的時候

23
00:01:21,870 --> 00:01:22,950
可以編譯在里面

24
00:01:22,960 --> 00:01:24,030
然后就可以判斷出

25
00:01:24,040 --> 00:01:26,590
有哪些映射是可以用的

26
00:01:26,940 --> 00:01:28,790
可以做編譯時的檢查

27
00:01:30,550 --> 00:01:32,510
而這個是運行的時候

28
00:01:33,180 --> 00:01:35,650
根據這里面的參數來判斷

29
00:01:40,890 --> 00:01:43,440
這是第二點

30
00:01:44,240 --> 00:01:44,760
第三點

31
00:01:47,610 --> 00:01:51,270
有幾個這種標識映射

32
00:01:52,810 --> 00:01:57,960
那就要看你的數據庫里面主鍵

33
00:01:57,970 --> 00:02:00,540
你是怎么來設置的

34
00:02:00,790 --> 00:02:04,560
如果說你每個表的主鍵是分立的

35
00:02:05,520 --> 00:02:05,940
這是一種

36
00:02:05,950 --> 00:02:06,660
第二個是什么

37
00:02:06,670 --> 00:02:07,540
數據庫里面

38
00:02:09,070 --> 00:02:11,290
同一個數據庫里面的所有的表

39
00:02:11,300 --> 00:02:12,650
它主鍵都是什么

40
00:02:13,200 --> 00:02:14,120
都是不同的

41
00:02:16,290 --> 00:02:17,170
如果是這樣

42
00:02:17,180 --> 00:02:19,170
你這里的映射只需要一個就行了

43
00:02:20,250 --> 00:02:24,120
如果說有多個,映射就有多個

44
00:02:26,130 --> 00:02:28,440
Fowler的意思就是說

45
00:02:29,960 --> 00:02:31,450
推薦每個泛化樹

46
00:02:32,200 --> 00:02:34,300
就一個標識映射

47
00:02:35,770 --> 00:02:39,680
也就是說,在我們設定主鍵的時候

48
00:02:41,100 --> 00:02:45,500
每棵泛化樹,超類子類這一棵樹

49
00:02:46,500 --> 00:02:49,090
它們用的主鍵應該是一致的

50
00:02:51,760 --> 00:02:53,070
那個算是一個體系

51
00:02:53,080 --> 00:02:59,510
那就每棵泛化樹就一個標識映射

52
00:03:02,200 --> 00:03:05,410
主要是這么一點知識點

53
00:03:05,500 --> 00:03:07,930
因為這本身也沒有什么太多的內容了

54
00:03:09,240 --> 00:03:11,110
就有一個在這里要查一下

55
00:03:11,120 --> 00:03:14,990
就判斷在不在里面就行了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41587.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為OD機考題(HJ65 查找兩個字符串a,b中的最長公共子串)

前言 經過前期的數據結構和算法學習,開始以OD機考題作為練習題,繼續加強下熟練程度。 描述 查找兩個字符串a,b中的最長公共子串。若有多個,輸出在較短串中最先出現的那個。 注:子串的定義:將一個字符串刪去前綴和后…

【Git 】規范 Git 提交信息的工具 Commitizen

Commitizen是一個用于規范Git提交信息的工具,它旨在幫助開發者生成符合一定規范和風格的提交信息,從而提高代碼維護的效率,便于追蹤和定位問題。以下是對Commitizen的詳細介紹。 1、Commitizen的作用與優勢 規范提交信息:通過提供…

C# Application.DoEvents()的作用

文章目錄 1、詳解 Application.DoEvents()2、示例處理用戶事件響應系統事件控制臺輸出游戲和多媒體應用與操作系統的交互 3、注意事項總結 Application.DoEvents() 是 .NET 框架中的一個方法,它主要用于處理消息隊列中的事件。在 Windows 應用程序中,當一…

Oracle PL / SQL INTERVAL數據類型

INTERVAL YEAR TO MONTH數據類型 INTERVAL YEAR TO MONTH存儲和操作年和月的間隔。 語法是: INTERVAL YEAR[(precision)] TO MONTH precision指定“years”字段中的數字位數。 我們必須在0..4的范圍內使用整數字面值。默認值為2。 以下代碼顯示如何將字面值分配…

基于16通道AD采集(CL1616和AD7616)的FPGA設計簡介

Cl1616是一款 16 位 DAS,支持對 16 個通道進行雙路同步采樣。CL1616 采用 5 V 單電源供電,可以 處理10 V、5 V 和2.5 V 真雙極性輸入信號,同時每對通道均能以高達 1 MSPS 的吞吐速率和 90 dB SNR 采樣。利用片內過采樣模式可實現更高的 SNR 性能。 AD7616與CL1616軟硬件兼容…

實驗四 圖像增強—灰度變換之直方圖變換

一.實驗目的 1.掌握灰度直方圖的概念及其計算方法; 2.熟練掌握直方圖均衡化計算過程;了解直方圖規定化的計算過程; 3.了解色彩直方圖的概念和計算方法 二.實驗內容: …

ArcGIS Pro SDK (八)地理數據庫 1 地理數據庫和數據存儲

ArcGIS Pro SDK (八)地理數據庫 1 地理數據庫和數據存儲 文章目錄 ArcGIS Pro SDK (八)地理數據庫 1 地理數據庫和數據存儲1 打開給定路徑的文件地理數據庫2 使用連接屬性打開企業級地理數據庫3 使用 sde 文件路徑打開企業級地理數…

Bootstrap 提示工具

Bootstrap 提示工具 Bootstrap 是一個流行的前端框架,它提供了一套豐富的工具和組件,用于快速開發響應式和移動設備優先的網頁。其中,提示工具(Tooltip)是 Bootstrap 提供的一個非常有用的組件,它可以在用戶將鼠標懸停在某個元素上時顯示額外的信息。本文將詳細介紹 Boo…

課設:選課管理系統(Java+MySQL)

在本博客中,我將介紹用Java、MySQL、JDBC和Swing GUI開發一個簡單的選課管理系統。 技術棧 Java:用于編寫應用程序邏輯MySQL:用于存儲和管理數據JDBC:用于連接Java應用程序和MySQL數據庫Swing GUI:用于構建桌面應用程…

555 定時器芯片工作原理

在本教程中,您將學習如何使用 555 定時器做一些有趣的事情。許多人用它做的第一件事就是制造閃爍的燈光。但這只是用該芯片可以做很多事情的簡單示例之一。您還可以控制電機、創建鬧鐘、創建樂器等等。 讓我們先來概覽一下這些引腳。 555 定時器引腳排列 引腳 1 接地…

【SpringCloud】概述 -- 微服務入門

在Java的整個學習過程中,大家勢必會聽見一些什么分布式-微服務、高并發、高可用這些專業術語,給人的感覺很高級,有一種高深莫測的感覺。可以看一下這篇博客對這些技術架構的演變有一個初步的認識: 服務端?并發分布式結構演進之路-CSDN博客文…

image媒體組件屬性配合swiper輪播

圖片組件&#xff08;image&#xff09; 先插入個圖片試試&#xff0c;插入圖片用src屬性&#xff0c;這是圖片&#xff1a; 代碼如下&#xff1a; <template><view><swiper indicator-dots indicator-color "#126bae" indicator-active-color &…

Jectpack Navigation組件設置統一跳轉動畫

Activity的跳轉一般通過Theme設置即可&#xff0c;但是Framment的跳轉除了NavigationUI類提供的方法會有動畫以外&#xff0c;直接調用navigate方法是沒有動畫的。 網上的實現個人認為比較麻煩&#xff0c;幫自己寫了一套&#xff0c;主要就是自定義NavHostFragement和Fragmen…

CobaltStrike的內網安全

1.上線機器的Beacon的常用命令 2.信息收集和網站克隆 3.釣魚郵件 4.CS傳遞會話到MSF 5.MSF會話傳遞到CS 1上線機器的Beacon的常用命令 介紹&#xff1a;CobaltStrike分為服務端和客戶端&#xff0c;一般我們將服務端放在kali&#xff0c;客戶端可以在物理機上面&#xff0…

tongweb 部署軟航流版簽一體化應用示例 提示跨域錯誤CORS ERROR

目錄 問題現象與描述 解決辦法 原理解析 什么是CORS 瀏覽器跨域請求限制 跨域問題解決方法 跨域請求流程 瀏覽器請求分類解析 http請求方法簡介 問題現象與描述 重慶軟航科技有限公司提供了一套針對針對word、excel等流式文件轉換成PDF版式文件并進行版式文件在線簽章…

ai積累-具體應用的大概設想

這些場景展示了以 ChatGPT 為代表的生成式 AI 可能的具體應用&#xff1a; 教育輔助&#xff1a; AI 可以充當學生的個性化輔導老師&#xff0c;提供定制化的學習材料和練習。例如&#xff0c;它可以生成針對學生能力水平和興趣的數學問題或歷史教學文章。 客戶支持&#xff1…

LESS 的嵌套寫法有什么優勢?

LESS的嵌套寫法可以提高代碼的可讀性和維護性。通過將相關的樣式規則嵌套在父選擇器中&#xff0c;可以更清晰地表達樣式之間的層級關系&#xff0c;避免重復的代碼&#xff0c;并且使樣式結構更加整潔。 例如&#xff0c;假設有以下HTML結構&#xff1a; <div class"…

Qt 加載圖片的幾種方式 以及加載 loading

項目中經常使用加載圖片&#xff1a; 常用有兩種方式&#xff1a; 1.使用 QWidget 加載圖片&#xff1a; 效果&#xff1a; 樣例源碼&#xff1a; int pict_H ui->widgetImage->height();int pict_W ui->widgetImage->width();ui->widgetImage->setFixe…

白騎士的C語言教學高級篇 3.4 C語言中的算法

算法是解決問題的核心。無論是排序、搜索&#xff0c;還是遞歸與動態規劃&#xff0c;算法的選擇和實現對程序的效率和性能有著重要影響。本節將介紹幾種常見的算法&#xff0c;包括排序算法、搜索算法&#xff0c;以及遞歸和動態規劃的應用。 排序算法 排序算法是將一組數據按…

昇思25天學習打卡營第17天|SSD目標檢測

學AI還能贏獎品&#xff1f;每天30分鐘&#xff0c;25天打通AI任督二脈 (qq.com) SSD目標檢測 模型簡介 SSD&#xff0c;全稱Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一種目標檢測算法。使用Nvidia Titan X在VOC 2007測試集上&#xff0c;SSD…