zoukankan      html  css  js  c++  java
  • 《Spring 2.0技术手册》 读书笔记七Spring的DAO框架(1)原理与DataSource注入

    1.原理

    何为持久层?把内存里的数据固化到硬盘上的过程,通常以数据库文件的格式固化。DAO-Data Access Object,在应用程序中,需要使用到数据存取时,是通过一个数据存取接口来操作,而实际上进行数据存取的对象都要实现该接口,在规范的方法之中实现存取时的相关细节。Spring的DAO框架的基本原理,就是依赖接口,将应用程序与底层存取技术隔离开来。如图:

    数据存取接口上只有与特定数据库存取技术无关的方法(update,insert,delete),具体存取细节封装在DAO实现类中。达到设计上依赖于接口,使应用不受限于某一种数据库技术。

    存取数据的流程无非是,取得DataSource,建立Connection,创建Statement,处理异常,关闭Statement和Connection等。大致代码如下:

     

    不同的数据库技术存取流程相同,Spring采用Template-Callback模式更加简化了存取。它将固定的流程编写于Template(模板)类中(如JdbcTemplate/HibernateTemplate类),而对于不同的一些细节步骤,则委托特定DAO支持对象来处理(可自定义或由Spring自动产生),如图:

    2. DataSource注入,依靠Spring的Bean定义配置文件,数据来源DataSource可以很方便的被修改配置,而不用修改代码。需要获得连接来源的DAO对象只需保留一个DataSource注入的操作接口(set方法)。

    实现javax.sql.DataSource的类有org.springframework.jdbc.datasource.DriverManagerDataSource和org.apache.commons.dbcp.BasicDataSource,区别是前者没用提供连接池功能,后者有连接池的功能。使用DataSource的类,只要在配置文件中引用即可,如下:

     

         前提是,UserDAO类中有 public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;}方法。调用时,就很简单了,现复习如下:

     

    另外注意的是:在使用dbcp提供的数据来源时,dataSource上要设置"destroy-method"属性,如此可以确保BeanFactory(Bean容器)在关闭时也一并关闭BasicDataSource。

     

  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982104.html
Copyright © 2011-2022 走看看