[图解]企业应用架构模式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.mzph.cn/diannao/41587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# Application.DoEvents()的作用

文章目录 1、详解 Application.DoEvents()2、示例处理用户事件响应系统事件控制台输出游戏和多媒体应用与操作系统的交互 3、注意事项总结 Application.DoEvents() 是 .NET 框架中的一个方法,它主要用于处理消息队列中的事件。在 Windows 应用程序中,当一…

实验四 图像增强—灰度变换之直方图变换

一.实验目的 1.掌握灰度直方图的概念及其计算方法; 2.熟练掌握直方图均衡化计算过程;了解直方图规定化的计算过程; 3.了解色彩直方图的概念和计算方法 二.实验内容: …

课设:选课管理系统(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 &…

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版式文件并进行版式文件在线签章…

Qt 加载图片的几种方式 以及加载 loading

项目中经常使用加载图片&#xff1a; 常用有两种方式&#xff1a; 1.使用 QWidget 加载图片&#xff1a; 效果&#xff1a; 样例源码&#xff1a; int pict_H ui->widgetImage->height();int pict_W ui->widgetImage->width();ui->widgetImage->setFixe…

昇思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…

利用border绘制三角技巧

绘制三角形的效果如图 <html lang"zh-cn"> <head><meta charset"UTF-8"><title>demo</title><style>* {margin: 0;padding: 0;}.box {/* 盒子宽高改成零就变成三角形 &#xff0c;需要哪个方向的三角形就设置哪个方向…

【分布式系统五】监控平台Zabbix实际监控运用(命令+截图详细版)

目录 一.Zabbix 监控 Windows 1.安装zabbix 2.Web 页面添加主机&#xff0c;关联模板 二.Zabbix 监控 Java 应用 1.安装tomcat 2.服务端安装 zabbix-java-gateway 3.Web 页面添加主机&#xff0c;关联模板 三.Zabbix 监控 SNMP 1.服务端安装 snmp 监控程序 2.修改 sn…

RT-Thread和freeRTOS启动流程

一. freeRTOS启动流程 二. RT-Thread启动流程 因为RT-Thread中我们定义了补丁函数也叫做钩子函数--$Sub$$main()--作为一个新功能函数&#xff0c;可以将原有函数劫持下来&#xff0c;并在之后的程序运行中加上$Super $ $前缀来重新调用原始函数。 所以启动流程是$Sub$$main(…

Chiasmodon:一款针对域名安全的公开资源情报OSINT工具

关于Chiasmodon Chiasmodon是一款针对域名安全的公开资源情报OSINT工具&#xff0c;该工具可以帮助广大研究人员从各种来源收集目标域名的相关信息&#xff0c;并根据域名、Google Play应用程序、电子邮件地址、IP地址、组织和URL等信息进行有针对性的数据收集。 该工具可以提…

Nginx-简介

介绍 nginx是一款HTTP和反向代理服务器、邮件代理服务器和通用TCP/IP代理服务器&#xff0c;在俄罗斯广泛使用&#xff0c;用于代理高负载站点。 版本 nginx开源版nginx plus企业版openresty将nginx和lua脚本结合 tengine更稳定、高性能 正向代理 客户端和代理服务是一伙的…

【vue动态组件】VUE使用component :is 实现在多个组件间来回切换

VUE使用component :is 实现在多个组件间来回切换 component :is 动态父子组件传值 相关代码实现&#xff1a; <component:is"vuecomponent"></component>import componentA from xxx; import componentB from xxx; import componentC from xxx;switch(…

生产力工具|viso常用常见科学素材包

一、科学插图素材网站 一图胜千言&#xff0c;想要使自己的论文或重要汇报更加引人入胜&#xff1f;不妨考虑利用各类示意图和科学插图来辅助研究工作。特别是对于新手或者繁忙的科研人员而言&#xff0c;利用免费的在线科学插图素材库&#xff0c;能够极大地节省时间和精力。 …

【代码随想录】【算法训练营】【第58天】 [卡码110]字符串接龙 [卡码105]有向图的完全可达性 [卡码106]岛屿的周长

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 59&#xff0c;周五&#xff0c;继续ding~ 题目详情 [卡码110] 字符串接龙 题目描述 卡码110 字符串接龙 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 […

昇思25天学习打卡营第13天|linchenfengxue

Diffusion扩散模型 关于扩散模型&#xff08;Diffusion Models&#xff09;有很多种理解&#xff0c;本文的介绍是基于denoising diffusion probabilistic model &#xff08;DDPM&#xff09;&#xff0c;DDPM已经在&#xff08;无&#xff09;条件图像/音频/视频生成领域取得…

小蜜蜂WMS与小蜜蜂WMS对接集成根据条件获取客户信息列表(分页)连通新增客户信息(小蜜蜂读写测试)

小蜜蜂WMS与小蜜蜂WMS对接集成根据条件获取客户信息列表&#xff08;分页&#xff09;连通新增客户信息(小蜜蜂读写测试) 接通系统&#xff1a;小蜜蜂WMS 天津市小蜜蜂计算机技术有限公司&#xff08;acbee&#xff0c;TianJinACBEEComputerTechnologyCo.,Ltd&#xff09;成立于…