第三十九章 持久对象和SQL - 持久类的 SQL 映射

文章目录

  • 第三十九章 持久对象和SQL - 持久类的 SQL 映射
  • 持久类的 SQL 映射
    • 对象 SQL 映射的演示
  • 对象 `SQL` 映射的基础知识
    • Classes and Extents

第三十九章 持久对象和SQL - 持久类的 SQL 映射

持久类的 SQL 映射

对于任何持久类,该类的每个实例都可以作为表中的一行使用,可以通过 SQL 查询和操作该行。为了演示这一点,本节使用管理门户和终端。

对象 SQL 映射的演示

考虑 SAMPLES 中的 Sample.Person 类。如果我们使用管理门户来显示与该类对应的表的内容,我们会看到如下内容:

在这里插入图片描述

请注意以下几点:

  • 此处显示的值是显示值,而不是存储在磁盘上的逻辑值。
  • 第一列 (#) 是该显示页面中的行号。
  • 第二列(ID)是该表中行的唯一标识符;这是打开此类对象时使用的标识符。 (在此类中,这些标识符是整数,但这并不总是正确的。)

在本例中,这些数字恰好相同,因为每次构建 SAMPLES 数据库时都会重新填充该表。在实际应用中,有可能某些记录已被删除,从而导致ID值存在间隙,并且这些值与行号不匹配。

在终端中,我们可以使用一系列命令来查看第一人称:

SAMPLES>set person=##class(Sample.Person).%OpenId(1)SAMPLES>write person.Name
Newton,Dave R.
SAMPLES>write person.FavoriteColors.Count()
1
SAMPLES>write person.FavoriteColors.GetAt(1)
Red
SAMPLES>write person.SSN
384-10-6538
>>> person=iris.cls("Sample.Person")._OpenId(1)
>>> print(person.Name)
Newton,Dave R.
>>> print(person.FavoriteColors.Count())
1
>>> print(person.FavoriteColors.GetAt(1))
Red
>>> print(person.SSN)
384-10-6538

这些值与我们通过 SQL 看到的值相同。

对象 SQL 映射的基础知识

由于继承不是关系模型的一部分,因此类编译器将持久类的“扁平”表示映射为关系表。下表列出了一些不同的对象元素如何投影到 SQL

Object ConceptSQL Concept
PackageSchema
ClassTable
PropertyField
Embedded objectSet of fields
List propertyList field
Array propertyChild table
Stream propertyBLOB or CLOB
IndexIndex
Class method marked as stored procedureStored procedure

映射表包含该类的所有适当字段,包括继承的字段。

Classes and Extents

IRIS 使用一种非常规且强大的对象表映射解释。

持久类的所有存储实例组成了所谓的类extent,一个实例属于它作为实例的每个类的范围。所以:

  • 如果持久类 Person 有子类 Student,则 Person 范围包括 Person 的所有实例和 Student 的所有实例。
  • 对于 Student 类的任何给定实例,该实例都包含在 Person 范围和 Student 范围中。

索引自动跨越定义它们的类的整个范围。 Person 中定义的索引包含 Person 实例和 Student 实例。 Student 范围中定义的索引仅包含 Student 实例。

子类可以定义其超类中未定义的附加属性。这些在子类范围内可用,但在超类范围内不可用。例如,Student 范围可能包括FacultyAdvisor 字段,该字段不包括在Person 范围中。

上述几点意味着在 IRIS 中编写检索相同类型的所有记录的查询相对容易。例如,如果想要统计所有类型的人员,可以对 Person 表运行查询。如果只想计算学生数量,请对 Student 表运行相同的查询。相反,对于其他对象数据库,要对所有类型的人员进行计数,则需要编写组合表的更复杂的查询,并且每当添加另一个子类时都需要更新此查询。

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

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

相关文章

前端项目练习(练习-003-webpack-01)

学习webpack前,首先,创建一个web-003项目,内容和web-002一样。(注意将package.json中的name改为web-003) 想想,我们开发Java 的时候,Maven帮我们做的主要是编译,打包等等内容。开发前…

【EI会议征稿】第八届能源系统、电气与电力国际学术会议(ESEP 2023)

第八届能源系统、电气与电力国际学术会议(ESEP 2023) 2023 8th International Conference on Energy System, Electricity and Power 第八届能源系统、电气与电力国际学术会议(ESEP 2023)定于2023年11月24-26日在中国武汉隆重举…

【教程】视频汇聚/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。视频监控系统EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、…

丰田的国际化与转型困境:对中国车企的欧洲策略启示

摘要:欧洲市场的消费者汽车偏好多样,中国车企进军欧洲时,需考虑产品设计和当地法规。回顾历史,丰田汽车通过其独特管理理念,在美国从廉价品牌形象成功转型为高质量、受信赖的全球品牌。但进入电动汽车时代,日本车企因深度共生的传统供应链而转型坎坷。中…

EasyExcel的源码流程(导入Excel)

1. 入口 2. EasyExcel类继承了EasyExcelFactory类,EasyExcel自动拥有EasyExcelFactory父类的所有方法,如read(),readSheet(),write(),writerSheet()等等。 3. 进入.read()方法,需要传入三个参数(文件路径…

1024程序员节之天马低代码开发者大赛篇

卡奥斯第二届1024程序员节正在火热进行中!本次活动由四个线上活动分会场线下会场组成,今天向大家详细介绍一下四大线上分会场中的“低代码分会场”~ 天马低代码开发者大赛于2023年9月22日至10月20日12: 00进行,活动设立能源和组态两个赛道&a…

算法竞赛备赛之动态规划训练提升,DP基础掌握

1.背包问题 1.1.01背包问题 01背包问题是在M件物品中选择若干件放在空间为W的背包中,每件物品的体积为W1,W2至Wn,价值为P1,P2至Pn,01背包的约束条件是给定几种物品,每种物品有且只有一个,并且…

深入理解Java单例模式和优化多线程任务处理

目录 饿汉模式懒汉模式单线程版多线程版双重检查锁定 阻塞队列 单例模式能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例,并提供一个全局访问点。 饿汉模式 类加载的同时,创建实例。 class Singleton {private static final Singlet…

基于 MATLAB 的电力系统动态分析研究【IEEE9、IEEE68系节点】

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

通俗易懂了解大语言模型LLM发展历程

1.大语言模型研究路程 NLP的发展阶段大致可以分为以下几个阶段: 词向量词嵌入embedding句向量和全文向量理解上下文超大模型与模型统一 1.1词向量 将自然语言的词使用向量表示,一般构造词语字典,然后使用one-hot表示。   例如2个单词&…

隐语 Meetup 北京站|精彩时刻大盘点!新品发布、行业案例、专家解读......欢迎围观

“隐语”是开源的可信隐私计算框架,内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择,提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow 9月23日,隐语开源社区 Meetup 北京专场顺利举行&am…

人工智能的前世今生与未来

人工智能的前世今生与未来 一、 什么是人工智能二、人工智能的前世三、人工智能的今生四、人工智能的未来 一、 什么是人工智能 人工智能(Artificial Intelligence,简称AI)是指一种模拟人类智能行为的科学与技术。 人工智能通过计算机系统进…

【慕伏白教程】 Linux 深度学习服务器配置指北

文章目录 镜像烧录系统安装系统配置常用包安装 镜像烧录 下载 Ubuntu 镜像 Ubuntu 桌面版 下载烧录工具 balenaEtcher 准备至少 8G 的 空白U盘 开始烧录 系统安装 开机进入BIOS,修改U盘为第一启动 选择 Try or Install Ubuntu 往下拉,选择 中文&a…

SpringBoot2.x整合Jedis客户端详细过程

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Sp…

[动物文学]走红年轻人化身“精神动物”,这届年轻人不想做人了

数据洞察流行趋势,敏锐把握流量风口。本期千瓜与您分享近期小红书八大热点内容,带您看热点、追热门、借热势,为您提供小红书营销布局风向标。 「动物文学」走红 年轻人化身“精神动物” 其实,这届年轻人“不想做人”很久了………

nvm nodejs的版本管理工具

nvm 全英文名叫 node.js version management,是一个 nodejs 的版本管理工具,为了解决 nodejs 各种版本存在不兼容现象可以通过他安装和切换不同版本的 nodejs。 一、完全删除之前的 node 和 npm 1. 打开 cmd 命令窗口,输入 npm cache clean…

二维码怎么分解成链接?线上快速解码教学

怎么分解二维码呢?有些时候我们需要将二维码图片分解成链接使用,所以想要使用解码功能一般都需要通过二维码生成器工具来完成。那么如何在线将二维码分解成链接呢,可能有些小伙伴还不知道怎么操作,下面就给大家分享一下免费二维码…

智能回答机器人的“智能”体现在哪里?

人工智能的广泛应用已经成为当今社会科技发展的趋势之一。通过人工智能技术,我们可以在不同领域中实现自动化、智能化和高效化,从而大大提升生产和生活效率。智能回答机器人的出现和使用便能很好的证明这一点。今天我们就来探讨一下智能会打机器人的“智…

分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测

分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测 目录 分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GA-RF遗传算法优化随机森林多输入分类预测(完整源码和数据&…

在线安装qt5.15之后任意版本

下载qt现在安装包: window安装包链接 进入cmd,用命令行打开安装包,并指定组件下载地址(这个是关键,之前用的是腾讯镜像,出现了版本灰色无法选中问题) .\qt-unified-windows-x64-4.6.1-online…