[图解]企业应用架构模式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.mfbz.cn/a/776730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】PyQt5可视化开发,如何设计鼠标显示的形状?

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Python实现ABC人工蜂群优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化…

Java 面向对象编程(OOP)的四大特征

Java 面向对象编程(OOP)的四大特征 1、抽象2、继承3、 封装4、多态性 💖The Begin💖点点关注,收藏不迷路💖 在Java编程中,面向对象编程(OOP)是一个核心概念。OOP的四大基…

红薯小眼睛接口分析与Python脚本实现

文章目录 1. 写在前面2. 接口分析3. 算法脚本实现 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

【Linux】进程信号_4

文章目录 八、进程信号3. 信号的处理4. 可重入函数5. volatile 未完待续 八、进程信号 3. 信号的处理 当某个信号的处理函数被调用时,操作系统会自动将当前信号假如进程的信号屏蔽字当中。如果处理完该信号,该信号同样也会自动从信号屏蔽字中 移除。该…

内网通讯软件有哪些?

企业内部内网通讯工具是为了满足企业内部沟通和协作需求而设计的软件工具,其主要特点是在内网环境下进行通讯,以保证安全性和可控性。以下是一些常见的内网通讯软件,在企业内部通讯中起着重要的作用。 1. Microsoft Teams Microsoft Teams是…

【博士每天一篇文献-综述】Threats, Attacks, and Defenses in Machine Unlearning A Survey

1 介绍 年份:2024 作者:刘子耀,陈晨,南洋理工大学 期刊: 未发表 引用量:6 Liu Z, Ye H, Chen C, et al. Threats, attacks, and defenses in machine unlearning: A survey[J]. arXiv preprint arXiv:2403…

【AI】DeepStream(15):图像分割deepstream-segmentation-test源码分析

【AI】AI学习目录汇总 上一篇:【AI】DeepStream(14):图像分割deepstream-segmentation-test示例演示 1、获取GPU属性 1)获取当前使用的CUDA设备编号 int current_device = -1;cudaGetDevice(&current_device);2)

linux-5.10.110内核源码分析 - Freescale ls1012a pcie host驱动

1、dts pcie设备树 1.1、pcie设备树 pcie1: pcie3400000 {compatible "fsl,ls1012a-pcie";reg <0x00 0x03400000 0x0 0x00100000 /* controller registers */0x40 0x00000000 0x0 0x00002000>; /* configuration space */reg-names "regs", &…

STM32-I2C硬件外设

本博文建议与我上一篇I2C 通信协议​​​​​​共同理解 合成一套关于I2C软硬件体系 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担 特点&#xff1a; 多主机功能&#x…

mac|idea导入通义灵码插件

官方教程&#xff1a;通义灵码下载安装指南_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 下载插件&#xff1a; ⇩ TONGYI Lingma - JetBrains 结果如下&#xff1a; 选择apply、ok&#xff0c;会出现弹窗&#xff0c;点击登录 可以实现&#xff1a;生成单元测…

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论③ | 9.6 - 9.10

前言 第 9 章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节理论性较强&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 9.6 项目管理过程组 9.7 项目管理原则 9.8 项目管理知识领域 9.9 价值交付系统 9.10 本章练习 9.6 项目管理过程组 项目…

2024小学生古诗文大会3个多月备考:吃透真题和知识点(持续)

根据主办方发布的方案通知&#xff0c;2024年上海市小学生古诗文大会的初赛将于10月19日&#xff08;星期六&#xff09;正式开始&#xff0c;还有3个多月的时间。那么该如何有效备考2024年小学生古诗文大会呢&#xff1f;建议围绕真题拓展知识&#xff0c;举一反三。 今天我们…

UE5 视频播放(自动播放和自动清除MediaTexture)

媒体播放器的打开时播放和媒体纹理的自动清除 。 在UE5开发视频播放时&#xff0c;遇到了闪帧的现象。合理选择这两个功能可解决。

掌握 Postman 脚本:入门指南

在探索 API 测试自动化环墁下&#xff0c;Postman 脚本显现其强大功能和灵活性&#xff0c;它不仅仅是 API 测试的工具&#xff0c;更是一个综合性的自动化平台。 Postman 脚本简介 Postman 允许用户在 API 请求生命周期中运行 JavaScript 脚本&#xff0c;这些脚本分为以下三…

Vite: 近几个版本的更新

概述 在 2021 年 2 月&#xff0c;尤大正式推出了 Vite 2.0 版本&#xff0c;可以说是 Vite 的一个重要转折点&#xff0c;自此之后 Vite 的用户量发生了非常迅速的增长&#xff0c;很快达到了每周 100 万的 npm 下载量。同时&#xff0c;Vite 的社区也越来越活跃&#xff0c;…

JAVA基础知识(下)

一、String相关面试题 1. 为什么 String 在 java 中是不可变的? - 如果不是不可变的&#xff1a;这种情况根本不可能&#xff0c;因为在字符串池的情况下&#xff0c;一个字符串对象/文字&#xff0c;例如 “Test” 已被许多参考变量引用&#xff0c; 因此如果其中任何一个更…

UCOS-III 任务同步机制-信号量

1. 信号量类型 1.1 二值信号量&#xff08;Binary Semaphores&#xff09; 二值信号量只有两个状态&#xff1a;可用&#xff08;1&#xff09;和不可用&#xff08;0&#xff09;。它主要用于任务之间的互斥访问或者事件通知。例如&#xff0c;当一个任务完成某个操作后&am…

进程、程序、应用程序之间的关系

文章目录 进程和程序进程和应用程序总结参考资料 进程和程序 程序&#xff1a;程序是存放在硬盘中的可执行文件&#xff0c;主要包括代码指令和数据。程序本身是一个静态的文件&#xff0c;只有在被操作系统加载到内存中并执行时才会变成进程。 进程&#xff1a;进程是程序在…

QoS-基于queue-profile部署流量整形

拓扑图 配置 完成前面的配置QoS-基于queue-profile拥塞避免-CSDN博客 为查看实验效果&#xff0c;cir设置为1KB qos queue-profile queue_pro1queue 0 gts cir 8 # 在AR1上ping 3.3.3.3&#xff0c;10个包&#xff0c;大小600字节&#xff0c;间隔0.1s AR2查看丢弃情况&…