1. 五种数据访问模式

1.1 在线访问

  • 占用一个数据库连接与数据库交互

1.2 DAO

  • 概念
    • Data Access Object
    • 是标准 J2EE 设计模式之一(教材中原话,但这种说法并不对,如果考,还是按教材来
  • 作用
    • 用于抽象和封装所有访问数据库的请求
    • 将底层的数据访问逻辑与业务逻辑分离
    • 从而实现低耦合和高内聚

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计-LMLPHP

  • DAO的常见组件
    • 一个DAO工厂类
    • 一个DAO接口
    • 一个实现了DAO接口的具体类
      • 包含访问特定数据源的数据的逻辑
    • 数据传输对象

1.3 DTO

  • 概念

    • Data Transfer Object
    • 用于在不同应用层或系统之间传输数据的对象
    • 可以看做一个“数据容器”或者“数据包装器”
    • 本身应该不包含具体的业务逻辑
    • 通常只包含内部一致性检查和基本验证的方法,且不调用其他方法
  • 两种设计方法

    • 使用编程语言内置的集合对象
    • 通过创建自定义类来实现DTO 对象
  • 两种设计方法的融合技术

    1. 代码生成技术
      • 该技术可以生成脱离现有元数据的自定义的DTO类的源代码
    2. 提供更强大的集合
      • 如:微软 ADO.NET 中的DataSet

1.4 离线数据模式

  • 概念
    • 从数据源获取数据后,安装预定结构存放在系统中
      • 其预定结构如: ADO.NET 中的关系结构、SDO 中的Data图表结构
  • 特点:
    • 对数据的操作独不依赖与数据源的连接
    • 可以脱离数据源来定义各异的数据存放结构和规则
    • 可以方便地与XML格式的文档之间互相转换

1.5 对象/关系映射 (O/R Mapping)

  • 概念
    • Object/Relation Mapping
    • 将应用程序中的数据转换成关系型数据库中的记录
    • 将关系数据库中的记录转换成应用程序中的对象

2. 工厂方法模式在数据访问层应用

  • 工厂方法模式:
    • 定义产品对象的创建接口,但由子类实现具体产品对象的创建。
    • 也可以表述为:使一个类的实例化延迟到其子类
  • 在数据访问层的应用
    • 首先定义一个操纵数据库的接口
    • 然后根据数据库的不同,由类工厂决定实例化哪个类。

3 ORM、Hibernate与CMP2.0设计思想

3.1 ORM

  • 概念
    • Object-Relation Mapping
    • 在关系型数据库和对象之间作一个映射
    • 操作数据库时只需操作这些对象(而不需要使用SQL)
  • 优点
    • 降低学习成本
    • 减少代码量
    • 提高开发效率
    • 降低错误
    • 增强安全性

3.2 Hibernate

1)概述

  • 概念:
    • 是一个开源的对象关系映射框架
    • 它对 JDBC 进行了轻量级的对象封装
  • 作用:
    • 提供从 Java类到数据表之间的映射
    • 提供数据查询和恢复机制
  • 优点
    • 减少操作数据库的工作量

2) Hibernate的架构(2023年的考题)

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计-LMLPHP

3)特点

  • 灵活性性
  • 功能强大

4. XML Schema的灵活运用

4.1 XML Schema

  • 概念
    • 是一种XML语言
    • 用于描述和约束XML文档的结构和内容模式
    • 它是DTD的替代者,但功能更强大和完善
    • 其自身使用XML 1.0的语法和规则进行描述和定义
    • 使用了命名空间来避免元素和属性名称的冲突
  • XML Schema是Schema组件的集合,下边介绍Schema组件

4.2 Schema组件

  • 概述
    • 详细说明了抽象数据模型的每个组件的严格语义

XML Schema是 Schema组件的集合,这些组件分为三组

  • 基本组件
    • 包括:简单类型定义、复杂类型定义、属性声明、元素声明
  • 组件
    • 包括:属性组、完整性约束定义、模型组、符号声明
  • 帮助组件
    • 包括:注释、模型组、小品词、通配符和属性使用

4.3 XML Schema规范

1)Primer(入门书/指南)

  • 概念
    • 一个非标准化的文档
    • 提供了XML Schema 的简单可读的描述
  • 目的:快速地理解如何利用 XMLSchema语言创建一个Schema

2)Structures(结构)

  • 概述: XML Schema中用于定义XML文档结构的元素和规则

3)Datatypes(数据类型)

  • 概述:是XML Schema中用于定义XML元素、属性的数据类型的机制
  • 特点
    • 提供了丰富的数据类型
    • 实现了继承和复用
    • 与命名空间紧密联系,易于使用

5. 事务处理设计

5.1 概述

  • 事务的概念:一组处理步骤要么全部发生,要么一步也不执行
  • 事务的提交:当所有步骤被完整地执行,我们称该事务被提交

5.2 ACID原则

1)原子性(Atomicity)

  • 事务执行过程中的任何失败都将导致事务所做的任何修改失效

2)一致性(Consistency)

  • 当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态

3)隔离性 (Isolation)

  • 事务执行过程中对数据的修改,在事务提交之前对其他事务不可见

4)持久性 (Durability)

  • 持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

5.3 J2EE对事务的处理

1)JDBC事务

  • JavaBean 中使用 JDBC方式进行事务处理
  • 原理:
    • 默认是auto-commit模式,每个SQL语句都被当作一个事务
    • 屏蔽auto-commit后,调用commit()方法提交事务

2)JTA事务

  • SessionBean 中使用JTA事务
  • 概念:
    • Java Transaction API
    • 它是描述事务接口的,是J2EE 模型的一部分
  • JTA的三个主要的接口
    • User Transaction接口
    • Transaction Manager接口
    • Transaction接口
  • 原理
    • 调用UserTransaction.begin() 方法开始一个事务
    • UserTransaction.commit()方法终止与当前线程关联的事务
    • UserTransaction.rollback()方法回滚

6. 连接对象管理设计

  • 资源池
    • 意义:解决资源频繁分配、释放所造成的问题
  • 过程
    • 创建静态连接池,根据初始化配置将连接放入连接池
    • 客户请求时
      • 若连接池中有空闲连接,则分配给用户
      • 若连接池中没有空闲连接,则选择适合的已分配出去的连接,给客户端复用
    • 当客户端释放连接时,根据是否被复用决定是否放回连接池

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-04-数据访问层设计-LMLPHP

08-12 12:55