《系统架构设计师教程(第2版)》第6章-数据库设计基础知识-04-应用程序与数据库的交互

文章目录

  • 1. 库函数级别访问接口
  • 2. 嵌入SQL访问接口
    • 2.1 概述
    • 2.2 数据库厂商
  • 3. 通用数据接口标准
    • 3.1 开放数据库连接 (ODBC)
    • 3.2 一些数据库接口
      • 1)数据库访问对象 (DAO)
      • 2)远程数据库对象 (RDO)
      • 3)ActiveX数据对象 (ADO)
      • 4)Java数据库连接 (JDBC)
  • 4. ORM访问接口
    • 4.1 ORM
    • 4.2 Java的ORM

通常情况下,用户可以通过SQL访问数据库。但是在应用系统中,需要高级程序语言来完成与用户之间的交互,用户不能直接访问后台的数据库。因此数据库管理系统需要提供程序级别的接口来访问数据。

  • 常见应用程序与数据库的数据交互方式:

1. 库函数级别访问接口

  • 概述
    • 数据库提供的最底层的高级程序语言访问数据接口

如:Oracle 数据库的 Oracle Call Interface(OCI)看不看都行,不会考
开发者可以使用高级程序语言编写程序实现人机交互和业务逻辑,而使用 OCI来访问数据库。OCI 是由一组应用程序开发接口 (API) 组成的, Oracle 提供 API 的方式是提供一组库。这组库包含一系列的函数调用。这组函数包含了连接数据库、调用 SQL和事务控制等。在安装DBMS Server或者客户端的时候,就安装了 OCI。OCI开发方法实际上是将结构化查询语言 (SQL) 和高级程序语言相结合的一种方法。对数据库的访问是通过调用 OCI库函数实现的,若将C 语言作为宿主语言,那么 Oracle数据库调用其实就是C 程序中的函数调用,一个含OCI调用的 C 程序其实就是用C 语言编写的应用程序。这样的程序既具有SQL语言非过程性的优点又具有C 语言过程性的优点,同时还可具有SQL语言的扩展, PL/SQL语言过程性和结构性的优点,因此使得开发出的应用程序具有高度灵活性。OCI开发方法的缺点是往往强依赖于特定的数据库,需要数据库开发人员对该数据库机制有较深的理解,学习难度较大,开发效率不是很高。

2. 嵌入SQL访问接口

2.1 概述

  • 概念:
    • 嵌入式SQL(Embedded SQL)
    • 将 SQL语句直接写入某些高级程序语言源代码中的方法
      • 宿主语言:目标源码的语言
  • 作用:使得应用程序拥有了访问数据以及处理数据的能力

2.2 数据库厂商

  • 数据库厂商通常提供如下组件:
    • 嵌入式SQL的预编译器
      • 作用:把包含有嵌入式SQL 的宿主语言源码转换成纯宿主语言的代码(预编译)
      • 结果:原有的嵌入式SQL会被转换成一系列函数调用
    • 提供一系列函数库:
      • 作用:确保链接器能够把代码中的函数调用与对应的实现链接起来
    • 额外的语法成分
      • 作用:嵌入需要
      • 包含:宿主变量使用声明、数据库访问、事务控制、游标操作的语法等

数据库厂商如上做法的原因:(随便看看,反正不考

  • 宿主语言的编译器不能识别和接受 SQL程序,需要解决如何将 SQL的宿主语言源代码编译成可执行码。
  • 宿主语言的应用程序如何与 DBMS之间传递数据和消息。
  • 如何把对数据的查询结果逐次赋值给宿主语言程序中的变量,以供其处理。
  • 数据库的数据类型与宿主语言的数据类型有时不完全对应或等价,如何解决必要的数据类型转换问题。

3. 通用数据接口标准

3.1 开放数据库连接 (ODBC)

  • 概述

    • Open DataBase Connectivity
    • 为解决异构数据库间的数据共享
  • 作用:为异构数据库访问提供统一接口

    • 允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据
    • 使应用程序直接操纵数据库中的数据,免除随数据库的改变而改变
  • 优点:以统一的方式处理所有的关系数据库

  • 基于 ODBC 的应用程序对数据库进行操作:

    • ODBC管理器注册一个数据源

    • 建立起 ODBC与具体数据库的联系

    • 用户直接将 SQL语句传送给ODBC

      ODBC 对数据库的操作不依赖任何DBMS

    • 所有的数据库操作由对应的 DBMS 的ODBC驱动程序完成

3.2 一些数据库接口

1)数据库访问对象 (DAO)

  • 概述:
    • Database Access Object
    • 位于业务逻辑层与数据资源层之间
    • 是微软的一种用来访问Jet引擎的方法
  • 适用:
    • 单系统应用程序
    • 小范围本地分布使用(访问桌面数据库,如Access、FoxPro、dBase等)

2)远程数据库对象 (RDO)

  • 概述
    • Remote Database Object
    • 用来访问远程数据库
    • 微软开发
  • 封装了ODBC API的对象层
    • 因此比DAO性能高、更易用

3)ActiveX数据对象 (ADO)

  • 概述
    • ActiveX Data Objects
    • 源于RDO,与ODBC一起工作
  • 作用:访问关系或非关系数据库
    • 不能方位ISAM和VSAM的非关系数据库
  • ADO.NET
    • 概念:是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。
    • 作用:提供了对关系数据、 XML和应用程序的访问,允许和不同类型的数据源以及数据库进行交互。

4)Java数据库连接 (JDBC)

  • 概述:
    • Java Database Connectivity
    • 是 Java语言中用来规范客户端程序如何访问数据库的应用程序接口
    • 为多种关系数据库提供统一访问

4. ORM访问接口

4.1 ORM

  • 概述:
    • 对象关系映射 (Object Relational Mapping)
  • 原理:通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射
  • 解决问题:数据库与程序间的异构性。

4.2 Java的ORM

  • Hibernate:全自动的框架,强大、复杂、笨重、学习成本较高
  • Mybatis:半自动的框架
  • JPA(Java Persistence API):JPA通过JDK 5.0注解或 XML描述对象-关系表的映射关系,是Java 自带的框架

在这里插入图片描述

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

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

相关文章

【科普文】三种处理器:CPU,GPU,NPU到底是什么?

更多内容在 从最早的CPU到GPU, 再到现在的NPU。处理器的型号和种类越来越多。每种处理器适用与不同的产品以及功能。下面来介绍三种处理器的区别和应用场景 CPU (中央处理器) CPU是计算机系统的核心,负责执行程序指令、处理数据和控制其他硬件设备。它通常由控制单…

Ollama管理本地开源大模型,用Open WebUI访问Ollama接口

现在开源大模型一个接一个的,而且各个都说自己的性能非常厉害,但是对于我们这些使用者,用起来就比较尴尬了。因为一个模型一个调用的方式,先得下载模型,下完模型,写加载代码,麻烦得很。 对于程…

新火种AI|GPT-4诞生1年,OpenAI把它放到了机器人上

作者:一号 编辑:美美 ChatGPT拥有了身体,机器人也有了灵魂。 从OpenAI在去年3月14日拿出GPT-4后,已经过了整整一年。显然,在GPT-4诞生之后的这一年,一切都迭代得太快了,从GPT-4展现多模态能力&…

计算机组成原理-练手题集合【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下计算机组成原理中的各章练手题,以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算机组成原理和西电的计算机组成原理。 计算机组成原理系列文章传送门: 第一/二章 概述和数…

2024.3.14 C++

思维导图 封装类 用其成员函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;加法&#xff09;&#xff0c;并封装一个全局函数实现&#xff08;对该类的&#xff09;数学运算符的重载&#xff08;减法&#xff09;。 #include <iostream>using nam…

GPT-SoVITS开源音色克隆框架的训练与调试

GPT-SoVITS开源框架的报错与调试 遇到的问题解决办法 GPT-SoVITS是一款创新的跨语言音色克隆工具&#xff0c;同时也是一个非常棒的少样本中文声音克隆项目。 它是是一个开源的TTS项目&#xff0c;只需要1分钟的音频文件就可以克隆声音&#xff0c;支持将汉语、英语、日语三种…

【PyQT】大地线长度计算工具实现

本设计实现了一个大地线长度计算工具&#xff0c;用户可以输入两个点的经纬度坐标&#xff0c;然后点击计算按钮&#xff0c;程序会根据输入的经纬度坐标计算出这两个点之间的大地线长度&#xff0c;并将结果显示在界面上。如下图所示。 附录完整代码如下&#xff1a; # 导入所…

L1-5 猜帽子游戏

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子&#xff0c;有的是黑色的&#xff0c;有的是黄色的。每个人可以看到别人头上的帽子&#xff0c;但是看不到自己的。游戏开始后&#xff0c;每个人可以猜自己头上的帽子是什么颜色&#xff0c;或者可以弃权不猜。如果没有…

【C语言_C语言语句_复习篇】

目录 一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句&#xff08;两种&#xff09; 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.…

MapReduce解析:从定义到核心思想,编程规范与序列化解读

目录 一、 MapReduce1.1 MapReduce定义1.2 MapReduce优缺点1.2.1 优点1.2.2 缺点 1.3 MapReduce核心思想1.4 MapReduce进程1.5 常用数据序列化类型1.6 MapReduce编程规范1.6.1Mapper阶段1.6.2 Reduce阶段1.6.3 Driver阶段 1.7 WordCount案例实操1.7.1 本地测试1.7.2 提交到集群…

TEC温度器温度控制器

一 主要特点 1 两路独立的串口&#xff0c;可同时手动和串口指令设定 PID 和温度&#xff1b; 2 一拖二结构&#xff0c;一个调试器控制两个控温模块单元&#xff1b; 3 精准控制温度&#xff0c;用户可自行修正&#xff1b;PT100/PT1000/NTC3435 温度电阻偏差&#xff1b; …

1.1 课程架构介绍:STM32H5信息安全特性概览

1.1 课程架构介绍&#xff1a;STM32H5信息安全特性概览 1. 概述 开发者在打造嵌入式系统时&#xff0c;安全和性能是产品开发设计的考量重点。为实现这一目标&#xff0c;ST推出了STM32H5系列&#xff0c;该系列作为微控制器新标杆面向工业应用市场&#xff0c;将为用户带来更…

windows中如何将已安装的node.js版本进行更换

第一步&#xff1a;先清除已经安装好的node.js版本 1.按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车&#xff08;或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出&#xff0c;输入cmd再点击回车键&#xff09; 然后进入命令控制行窗口&#xff0c;并输入where node…

【Axure教程】能增删改的树形表格

多层级表格又成为树形表格&#xff0c;是在后台常用的一种表格形式&#xff0c;当表格数据存在多层级关系是&#xff0c;可以通过多层级表格&#xff0c;从而更加清晰的呈现数据内容&#xff0c;帮助人们更好地理解和分析数据之间的关系&#xff0c;从而更加有效地传递信息。 …

【吊打面试官系列】Java虚拟机JVM篇 - 关于JVM 新生代、老年代、永久代的区别

大家好&#xff0c;我是锋哥。今天分享关于JVM新生代、老年代、永久代的区别的JVM面试题&#xff0c;希望对大家有帮助&#xff1b; JVM 新生代、老年代、永久代的区别? 在 Java 中&#xff0c;堆被划分成两个不同的区域&#xff1a;新生代 ( Young ) 、老年代 ( Old ) 。而新…

【微服务】nacos注册中心

Nacos注册中心 国内公司一般都推崇阿里巴巴的技术&#xff0c;比如注册中心&#xff0c;SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 1.1.认识和安装Nacos Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在…

C++ 改造红黑树,封装map和set

C 改造红黑树,封装map和set 一.前言:已经实现好了的红黑树二.简化STL库里面对于map和set的封装1.STL库中红黑树的简化代码2.STL库中set的简化代码3.STL库中map的简化代码4.封装map和set的第一步5.红黑树第一个模板参数的价值6.红黑树节点的定义 三.仿函数1.解除仿函数的误解2.仿…

Android App冷启动耗时优化

Android应用启动过程 Android应用启动过程&#xff0c;主要包含app::onCreate及执行前的Application阶段及Activity::onCreate执行之后的Activity阶段&#xff0c;以及两个阶段之间的间隙handleMessage阶段和最终页面渲染上屏完成前数据加载阶段四个区间组成。 具体来看&#x…

IDEA中配置Tomcat

在IDEA中配置Tomcat 第一步&#xff1a;选择这个方框 第二步&#xff1a;选择号&#xff0c;找到Tomcat Server&#xff08;Local&#xff09; 第三步&#xff1a;将红方框内填完整 第四步&#xff1a;创建artifaces&#xff0c;选择Deployment–>Artia…选择 *.war expl…

嵌入式驱动学习第三周——字符设备驱动关键结构体

前言 linux内核将字符设备抽象成一个具体的数据结构&#xff0c;可以理解为字符设备对象&#xff0c;这篇博客就来讲解一下字符设备驱动的关键结构体。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以…