《系统架构设计师教程(第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.rhkb.cn/news/276106.html

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

相关文章

python爬虫实战——小红书

目录 1、博主页面分析 2、在控制台预先获取所有作品页的URL 3、在 Python 中读入该文件并做准备工作 4、处理图文类型作品 5、处理视频类型作品 6、异常访问而被中断的现象 7、完整参考代码 任务:在 win 环境下,利用 Python、webdriver、JavaS…

在Django中使用PyJWT实现登录及验证功能

目录 1、安装PyJWT 2、对信息加密及解密 3、配置登录视图和及url 4、登录装饰器 5、在验证有登录权限的的视图中登录 PyJWT的使用 1、安装PyJWT pip isntall pyjwt 2、对信息加密及解密 import jwt import datetime from jwt import exceptions# 加密盐 JWT_SALT &qu…

Spring Boot中Excel数据导入导出的高效实现

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

《Ubuntu20.04环境下的ROS进阶学习4》

一、发布地图消息 在上一小节中我们已经获取到了激光雷达的数据,在本接中我们将学习地图数据格式和如何发布地图数据。 二、了解地图数据格式 首先登录 index.ros.org 网站搜索一下map_server消息包。您也可以直接搜这个网址 map_server - ROS Wiki ,下翻…

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时,如果超出其高度,默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示,那么就需要禁止自动滚动。 我们可以在append之后,添加如下代码: //设置编辑框的光标位…

水库大坝安全监测中需要注意的事项

随着经济和社会的发展,水资源的需求也在不断增加。因此,建设水库已成为保障水资源的主要方式之一。然而,随着水库规模的增大和工程的复杂性的增加,水库大坝的安全问题也日益引起重视。为此,需要对水库大坝进行安全监测…

链路聚合实验(华为)

思科设备参考:链路聚合实验(思科) 一,技术简介 网络设备的链路聚合技术(Link Aggregation)是一种将多个物理链路捆绑在一起,形成一个逻辑链路的技术。这样做可以增加带宽、提高可靠性和实现负…

Spring Cloud Alibaba微服务从入门到进阶(四)(服务发现-Nacos )

Nacos是服务发现组件和配置服务器 作为服务发现注册组件Nacos Server 搭建Nacos Server 下载、启动 访问nacos,默认 用户/密码 nacos/nacos 将应用注册到nacos 加依赖 在SpringCloud子项目中,Feign是属于OpenFeign,Sentinel、Nacos是属于alibaba的&…

Python数据分析-4

1.对于一组电影数据,呈现出rating,runtime的分布情况: #encodingutf-8 import pandas as pd import numpy as np from matplotlib import pyplot as plt file_path "./youtube_video_data/IMDB-Movie-Data.csv" df pd.read_csv(file_path) …

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

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

【源码独家】GPU池化平台 AI训练平台 AI推理平台

GPU池化软件 | (AI人工智能训练平台、AI人工智能推理平台) 讨论群v:🚀18601938676 一、AI人工智能开发-------------面临的问题和挑战 1. GPU管理难题 1.1 资源管理难:算力资源昂贵,但是缺乏有效管理,闲置情况严重。 1.2 用户…

【Unity】Transform、Rigidbody、CharacterController移动

前言 在使用Unity开发的时候,移动是最最基础的一个需求,我来给大家简单的讲一下Unity中的几种常见的移动方法。 1.Transform移动 Transform移动就是修改物体的position ①修改位置 这里要注意:坐标分为世界坐标和本地坐标 //将物体的世界坐…

【数学】【计算几何】1453. 圆形靶内的最大飞镖数量

作者推荐 视频算法专题 本文涉及知识点 数学 计算几何 LeetCoce:1453. 圆形靶内的最大飞镖数量 Alice 向一面非常大的墙上掷出 n 支飞镖。给你一个数组 darts ,其中 darts[i] [xi, yi] 表示 Alice 掷出的第 i 支飞镖落在墙上的位置。 Bob 知道墙上所有 n 支飞…

bootstrap企业网站前端模板

介绍 企业网站前端模板 软件架构 前端所用技术html/css/js/jquery 前端框架bootstrap 安装教程 浏览器本地路径访问发布到服务器比如(tomcat/nginx等)云服务器/虚拟机 网站效果图 网站预览 点击预览 源码地址 https://gitee.com/taisan/company…

React——react 的基本使用

前提:安装全局的脚手架,通过create-creat-app 项目名,我们创建好一个新项目,cd进去,通过npm start去运行该项目 注意:简单看下demo的配置,在根目录我们可以看到,没有任何webpack的…

【MIT 6.S081】2020, 实验记录(8),Lab: locks

目录 Task 1&#xff1a;Memory allocator (moderate)</font>Task 2&#xff1a;Buffer cache (hard)</font> Task 1&#xff1a;Memory allocator (moderate) 这个任务就是练习将一把大锁拆分为多个小锁&#xff0c;同时可以更加深入地理解 memory allocator 运行…

R语言深度学习-3-过拟合问题(无监督正则化/Lasso回归/岭回归/集成和平均算法)

本教程参考《RDeepLearningEssential》 我们从上一个教程看到&#xff0c;我们看到在我们训练迭代或者训练更大神经网络的时候&#xff0c;往往会产生过拟合&#xff0c;而且越来越严重&#xff0c;它可能会把训练它的数据拟合的很好&#xff0c;但是未必能把新数据做的很好。…

HSE化工应急安全生产管理平台:衢州某巨大型化工企业的成功应用

在化工行业中&#xff0c;安全生产一直是至关重要的议题。为了提高生产安全性、降低成本并提升企业形象&#xff0c;衢州某巨大型化工企业引入了HSE化工应急安全生产管理平台&#xff0c;取得了显著的改善和获益。 该平台的核心功能包括风险管理和应急预案制定。通过对化工生产…

KubeSphere 社区双周报|2024.02.29-03.14

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.02.29-03.14…

3D全景:为各行业提供更真实的交互体验

近年来&#xff0c;随着科技的不断发展&#xff0c;3D全景技术逐渐融入到了我们的日常生活中来。3D全景技术的应用落地&#xff0c;为广大用户提供了全新的视觉体验&#xff0c;让人们能够更加真实、直观地感受各行业的场景。 3D全景的优势就在于真实感和互动性&#xff0c;可以…