chapter10_通过Spring和JDBC征服数据库_1_Spring的数据访问哲学

  • 当开发Spring应用的__持久层__时, 会有多种选择:

    JDBC

    Hibernate

    Java持久化API

    其他持久化框架

    NoSQL等

  • 数据访问的功能放到一个或多个专注于此任务的组件中, 这样的组件称为__DAO__或__Repository__

      服务对象 ----->  Repository接口
                            |
                            |
                            |
                      Repository具体实现
    
  • Spring的数据访问异常体系

    (1) 引起JDBC中的SQLException的可能原因

    1° 无法连接数据库

    2° 要执行的查询存在语法错误

    3° 查询的表或列不存在

    4° 插入或更新的数据违反了数据库约束

    结论: SQLException的可能引发原因太多, 并且通常在catch块中无法解决, 并且SQLException是检查型异常必须catch

    (2) 一些持久化框架提供了相对丰富的异常体系, 例如Hibernate, 但是它们是__框架相关的__, 不具有通用性

    (3) SpringJDBC的异常处理体系

    1° Spring为读取和写入数据的几乎所有错误情况都提供了对应的异常, 有丰富的异常类型

    2° 这些异常类型没有与特定的框架关联

    所有异常都继承于DataAccessException, 而DataAccessException继承于RuntimeException, 所以不是一定要catch

  • 数据访问模板化

    (1) 使用了__模板方法模式__, 因为数据访问的中一些步骤是通用的, 一些步骤是定制的, 但是整体流程是一样的

    (2) Spring将数据访问过程中固定的部分称为__模板template__, 可变的部分称为__回调callback__

      Repository模板                   Repository回调
    
      1. 准备资源                         
      2. 开始事务
                                       3. 在事务中执行
                                       4. 返回数据
    
      5. 提交/回滚事务
      6. 关闭资源和错误处理
    

    (3) Spring提供了多个可选的模板 P293

      JDBC的模板  -->  JdbcTemplate
    
      Hibernate的模板    --> HibernateTemplate
    
      ...
    

    JdbcTemplate的类图见"JdbcTemplate.uml"

  • 在声明模板和Repository之前, 我们需要先在Spring中配置一个数据源用于数据库连接

猜你喜欢

转载自blog.csdn.net/captxb/article/details/87884718