本章目录:
一、节概述
本节《应用程序与数据库交互》主要讲解应用程序如何通过不同方式与数据库进行连接、访问和操作,是系统架构设计中“数据层与业务层交互”的关键环节。
它在软考系统架构设计师考试中地位重要,涉及的技术栈丰富,包括 库函数接口
、嵌入式 SQL
、通用数据访问接口
以及 对象关系映射(ORM)
等内容。这些技术直接关系到系统的数据访问效率、可维护性和可扩展性,是高频考点与实战应用的结合体。
二、知识详解
1. 应用程序与数据库交互的常见方式
应用程序与数据库的交互方式大致可分为以下四类:
交互方式 | 简要说明 |
---|---|
库函数接口 | 由数据库厂商提供的底层访问接口 |
嵌入式 SQL | SQL 嵌入高级语言代码中 |
通用数据接口标准 | 跨数据库的统一访问方案,如 ODBC、JDBC |
对象关系映射(ORM) | 将数据库表与对象自动映射,提高开发效率 |
2. 库函数接口(Library API)
这是一种低层次、效率高、依赖性强的数据库访问方式。
- 示例:Oracle 的
OCI(Oracle Call Interface)
- 特点:
- 允许开发者对数据库进行精细控制
- 对性能要求高的系统适用
- 但需掌握数据库特定的 API 规范,可移植性较差
🔴 适合高性能、数据库定制化程度高的场景
3. 嵌入式 SQL(Embedded SQL)
在程序代码中直接嵌入 SQL 语句,是数据库早期应用中广泛使用的方式。
- 常用于 C/C++、COBOL 等语言中
- 编译前由预处理器将 SQL 解析为对应的函数调用
优缺点:
- 🔴
优点
:便于理解,开发直观 - 🔴
缺点
:可移植性差,耦合度高,调试复杂
4. 通用数据接口标准
该方式主要解决异构数据库访问统一性问题,常见的标准包括:
📌 ODBC(Open Database Connectivity)
- 微软提出的早期标准
- 通过统一的 API 操作不同厂商数据库
- 🔴 最大优点是:不依赖具体 DBMS
📌 JDBC(Java Database Connectivity)
- Java 平台下的标准数据库访问方式
- JDBC 驱动类型包括:
- Type 1:JDBC-ODBC 桥接
- Type 2:本地 API 驱动
- Type 3:网络协议中间件
- Type 4:纯 Java 驱动(推荐)
📌 ADO(ActiveX Data Objects)
- 微软用于 .NET 平台的数据访问接口
- 相较 DAO 和 RDO,ADO 更灵活、抽象程度高
接口类型 | 适用语言/平台 | 特点 |
---|---|---|
DAO | VB | 面向 Jet 引擎 |
RDO | VB | 面向关系型数据库 |
ADO | VB/.NET | 面向多种数据源,抽象度更高 |
JDBC | Java | 支持多数据库,跨平台 |
5. 对象关系映射(ORM)
ORM 是将数据库表与应用程序中的对象进行自动映射的技术,大幅度简化数据库操作。
常见 ORM 框架:
框架 | 平台 | 特点 |
---|---|---|
MyBatis | Java | 半自动化,需要手写 SQL |
JPA/Hibernate | Java | 全自动映射,适合快速开发 |
Entity Framework | .NET | 微软官方 ORM 工具 |
ORM 优势:
- 🔴
提高开发效率
:开发者无需关心底层 SQL - 🔴
易于维护和扩展
- 🔴
支持缓存机制
,有助于性能提升
ORM 劣势:
- 性能略逊于手写 SQL
- 对复杂查询支持不如原生 SQL 灵活
三、关键点提炼
🧠 高频考点整理如下:
🔴 库函数接口
是最底层的访问方式,如 Oracle 的 OCI
🔴 嵌入式 SQL
通过预编译器转换为函数调用,易与业务代码耦合
🔴 ODBC/JDBC/ADO
属于跨平台、跨数据库的统一访问标准
🔴 JDBC 驱动
类型及区别是常考细节
🔴 ORM 框架优缺点
与适用场景要能灵活判断
四、考试提示
📌 出题常见形式包括:
- 名词解释题(如 ORM、JDBC)
- 场景判断题(判断哪种方式适用于某个项目背景)
- 技术对比题(比如 JDBC 与 ODBC 的差异)
🎯 易混淆点:
ODBC
vs.JDBC
:前者为微软通用标准,后者为 Java 专用标准MyBatis
vs.Hibernate
:前者手动编写 SQL,后者自动生成 SQL嵌入式 SQL
并非 ORM,而是 SQL 融入语言代码中
五、总结与建议
本节内容结合了理论理解与工程实践,需要熟悉多种访问方式的技术特征与适用场景,建议采取如下学习策略:
- 构建比较表格,强化不同访问方式的异同点理解
- 在复习中多结合真实开发项目的经验,理解其设计动因
- 通过画图梳理交互方式的结构层次和数据流转路径
特别建议使用实际代码片段(如 JDBC 连接、MyBatis 映射 XML)进行练习,以帮助理解抽象概念的落地实现。
坚持复习,逐步积累,下一节我们继续深入系统架构知识体系!