设计模式-标识域(Identity Field)

目的

为了在内存对象和数据库行之间维护标识而在对象内保存的一个数据库标识域。

关系数据库和内存对象的区别

  • 区分行:关系数据库使用键来区分数据行,而内存对象不需要这样一个键

  • 引用方法:对象系统中通过原始内存位置直接区分对象,数据库需要键区分行

因此,为了满足对数据库的几个基本操作,对象和数据库行之间依靠标识域进行交互。

工作机制

键的选择
两类键:

  • 有意义的键:含有语义的键,如身份证号码,容易出现错误。
  • 无意义的键:数据库顺序码。数据库系统自行维护,不会出现错误。

复杂程度:

  • 简单键:只使用一个数据库域
  • 组合键:使用数据库多个域

唯一性:

  • 表唯一键:在一个表中是唯一的。
  • 数据库唯一键:对任何表的任何数据行都是唯一的。

标识域的处理

  • 简单键:比如使用一个简单的整数键即可,并且容易做等值比较。
  • 组合键:等值比较复杂些,需要单独一个类来处理-键类。

标识域的表示

  • 采用基本结构表示标识域共同特征,不同的情况在子类中处理。
  • 只用一个单独的键类,维护一个键对象的普通列表。
  • 每一个领域类对应一个键类。

创建新键

  • 自动生成,但要依赖于不同数据库系统提供的不同功能。
  1. 自动生成域。缺点是:难以确定生成什么键值,如插入一份订单以及多个订单项。
  2. 数据库计数器。如Oracle的序列,可以让序列以任何整数增长,但没有统一标准。
  • GUID(全局唯一标识符),缺点:生成算法使用了以太网卡地址、纳秒级的时钟、芯片ID码和其他可能的数字,生成的结果串比较大。
  • 自己产生键值。利用算法找到表中的最大项。
  • 键表。包含两列:名字和下一个有效值,如果使用表唯一键,对于数据库中每一个表都有一行数据与之对应,如果使用数据库唯一键,只有一行数据与之对应。
     

使用时机

  • 一般在使用领域模型或者行数据入口时使用;
  • 在事务脚本、表模块或者表数据入口不需要;
  • 对于有值语义的小对象,如货币或者日期范围等自身不构成表的对象,最好使用嵌入值
  • 还可以扩展标识映射来维护标识域,一般用于不便在内存对象中保存标识域的系统中

示例之一-使用整型键(C#)

键在两种情况下很重要:查找和插入。
查找分为两步:加载多行到一个数据集中;查找选出特定的记录。


插入。使用简单的整数标识域,插入行为可以层超类型上实现

示例之二-使用键表(Java

创建单独的键产生器

示例之三-使用组合键(Java

组合键的处理最好采用键类,应具有存储键中多元素并且能判断两键相等

领域对象的层超类型需要一个键域

示例之四-使用组合键(Java

读取订单及订单项。分为查找(找到正确的行)和加载(从行中加载到领域对象),本例的思想:把单键,即整型键的行为作为默认的情形,子类可以覆盖该默认行为。

读取订单及订单项。分为查找(找到正确的行)和加载(从行中加载到领域对象)。

订单和订单项分别用具体的行为覆盖层超类型中的方法

插入订单及订单项(更新和删除操作类似)。

本例的思想:对于单键,即整型键的行为作为默认的情形,子类可以覆盖该默认行为。

同时把键数据和对象中的数据分开插入,因为可以为键提供默认行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/399919.html

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

相关文章

【资源】wordpress 子比主题

简介 子比主题是一款功能强大的WordPress主题模板,支持社区论坛、商城、支付、古腾堡编辑器等多种功能。很多资源类网站都是基于此搭建的。搭建后的效果基本上和官网一致,可查看官网的演示效果。 官方网站:https://www.zibll.com/ 如要获取…

安装MySQL数据库【后端 8】

安装MySQL数据库 MySQL是世界上最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于Web应用程序开发中。无论你是初学者还是有一定经验的开发者,掌握MySQL的安装都是必不可少的技能。本文将指导你如何在不同的操作系统上安装…

Elasticsearch:使用 ES|QL 进行地理空间搜索

作者:来自 Elastic Craig Taverner 多年来,Elasticsearch 一直具有强大的地理空间搜索和分析功能,但其 API 与典型的 GIS 用户习惯的 API 截然不同。在过去的一年中,我们添加了 ES|QL 查询语言,这是一种管道查询语言&a…

MapReduce_Writable序列化

使用序列化封装对象 将输入的csv按照员工号拆分成每个员工&#xff0c;每个员工存储为员工对象 数据处理过程 employee_noheader.csv 1,ZhangSan,101,5000 2,LiSi,102,6000 3,WangWu,101,5500 4,ZhaoLiu,103,7000 5,SunQi,102,6500pom.xml <?xml version"1.0&qu…

【大模型系列】更像人类行为的爬虫框架

随着大规模模型技术的兴起&#xff0c;我们可以看到百模大战、各种智能体、百花齐放的应用场景&#xff0c;那么作为一名前端开发者&#xff0c;以前端的视角&#xff0c;我们应当如何积极做好技术储备&#xff0c;开拓技术视野&#xff0c;在智能体时代保持一定的竞争力呢&…

ElasticSearch聚合操作详解

文章目录 聚合操作聚合的分类测试数据Metric AggregationBucket Aggregation获取job的分类信息限定聚合范围Range & Histogram聚合聚合嵌套 Pipeline Aggregation聚合的作用范围排序ES聚合分析不精准原因分析聚合性能优化启用 eager global ordinals 提升高基数聚合性能插入…

打造高效信息发布平台小程序:设计思路与实践

在当今这个信息爆炸的时代&#xff0c;信息发布平台已成为连接用户与内容的桥梁&#xff0c;小程序以其独特的优势成为众多企业和个人开发者青睐的选择。开发一款专注于信息发布与共享的小程序&#xff0c;旨在为用户打造一个便捷、高效、互动性强的信息获取平台&#xff0c;具…

luckyexcel 编辑预览excel文件

luckyexcel 编辑预览excel文件 支持后端传文件流预览编辑&#xff0c;也支持选择本地文件编辑预览 看效果 上代码 <template><div style"margin: 30px"><div class"button-box2"><div><div style"color: red">…

Windows File Recovery卡在99%怎么解决?实用指南!

为什么会出现“Windows File Recovery卡在99%”的问题&#xff1f; Windows File Recovery&#xff08;Windows文件恢复&#xff09;是微软设计的命令行应用程序。它可以帮助用户从健康/损坏/格式化的存储设备中恢复已删除/丢失的文件。 通过输入相关命令&#xff0c;设置源/…

整理 酷炫 Flutter 开源UI框架 按钮

flutter_percent_indicator Flutter 百分比指示器库 项目地址&#xff1a;https://github.com/diegoveloper/flutter_percent_indicator 项目Demo&#xff1a;https://download.csdn.net/download/qq_36040764/89631340

jenkins 安装以及自动构建maven项目并且运行

在这里找到你对应jdk的版本的jenkins包 War Jenkins Packages 我这里用的使java8,所以下载 https://mirrors.jenkins.io/war-stable/2.60.1/jenkins.war 然后jenkins可以安装到centos系统 在本地windows系统运行命令行 scp C:\Users\98090\Downloads\jenkins.war root@192…

模拟三层--控制层、业务层和数据访问层

三层的概念:https://developer.aliyun.com/article/1390024 一、新建一个项目 我新建好的项目名为spring__ioc_02,然后在 src-main-java 下建立三层&#xff08;数据访问层、业务层和控制层&#xff09;的包 dao、service 和controller、并在包下建立相应的接口和实现类 Proje…

【2】初识JVM

目录 一.什么是JVM 二.JVM的功能 2.1即时编译 三.常见的JVM​编辑 ​编辑 总结​编辑 一.什么是JVM 二.JVM的功能 2.1即时编译 三.常见的JVM 总结

基于Java中的SSM框架实现高校就业管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现高校就业管理系统演示 摘要 本论文主要讲述了基于SSM框架及MySQL数据库实现的就业管理系统的设计和开发过程。本论文中所讲的就业管理系统是通过所学的知识创办一个非商业性的网站平台&#xff0c;使所有想要就业信息查看的高校毕业生们与想要宣传自己…

Spring Web MVC入门(中)

1. 请求 访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要 是学习如何传递参数到后端以及后端如何接收. 传递参数, 咱们主要是使⽤浏览器和Postman来模拟&#xff1b; 1.1 传递单个参数 接收单个参数&#xff0c;在Spring MV…

Spring boot敏感参数加密配置

一&#xff0c;背景 在项目中很多参数会被配置到配置文件中&#xff0c;比如说密钥&#xff0c;用户名&#xff0c;数据库连接&#xff0c;账号密码之类的&#xff0c;如果用明文配置&#xff0c;会有一定的安全风险。为了减小风险&#xff0c;增加对敏感配置数据的加密配置。…

路径规划 | 五种经典算法优化机器人路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 五种经典算法优化机器人路径规划&#xff0c;算法可任意更换&#xff01;地图可修改&#xff01;Matlab语言 1.分为简单路径规划和复杂路径规划两种情景&#xff0c;采用粒子群算法(PSO)&#xff0c;遗传算法(GA)&am…

快速上手Spring Boot

快速上手Spring Boot (qq.com)

YOLO基础-目标检测的性能指标详解与计算方法

目标检测是计算机视觉中的重要任务&#xff0c;主要目的是在图像中识别并定位特定的物体。YOLO&#xff08;You Only Look Once&#xff09;系列模型作为目标检测领域的代表性方法之一&#xff0c;凭借其高效和准确的特点&#xff0c;广泛应用于实际场景中。本文通过详细介绍目…

AI技术在招聘数据分析洞察中的作用

一、引言&#xff1a;AI赋能招聘新纪元 在数字化转型浪潮中&#xff0c;人工智能技术&#xff08;AI&#xff09;正以前所未有的速度渗透至各行各业&#xff0c;其中&#xff0c;招聘领域正经历着一场深刻的变革。传统招聘模式依赖于人工筛选简历、面试评估等低效且主观性强的…