Spring源码学习笔记---数据访问(一)

来源:互联网 发布:淘宝海外代购哪家靠谱 编辑:程序博客网 时间:2024/06/11 19:29
以统一的数据访问异常层次体系为核心,以JDBC API的最佳实践和统一集成各种ORM方案为两翼,为java平台提供完美的数据访问。

异常层次体系:
DataAccessException抽象类系列:
CleanupFailureDataAccessException
InvalidDataAccessResourceUsageException
DataIntegrityViolationException
ConcurrencyFailureException等

JDBC API最佳实践:
1.基于template的JDBC使用方式(以JdbcTemplate为核心,采用模板方法模式)
2.基于操作对象的JDBC使用方式(以RdbmsOperation抽象类为基础)

模板方法模式:用于对算法或者行为逻辑进行封装,即如果多个类中存在某些相似的算法逻辑或者行为逻辑,可以将这些相似的逻辑提取到模板方法类中实现,然后子类根据需要实现某些自定义的逻辑。




----------JdbcTemplate类------------
模板方法类想到callback接口做事,就要提供相应的资源,callback使用提供的资源做事。完事之后,模板方法类来处理公开的资源,callback则不需要关心这些。

默认情况下,JdbcTemplate采用SQLErrorCodeSQLExceptionTranslator进行SqlException的转译工作。
否则使用SQLStateSQLExceptionTranslator转译

自定义异常转译简单配置:使用classpath根路径下的sql-error-codes.xml(原文件存在于jdbc的support包中)。

JdbcTemplate的初始化:
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
//destroy-method="close":确保应用退出后,数据库连接可以关闭
<bean id="namedParameterJdbcTemplate"
        class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
        <constructor-arg ref="dataSource" />
/bean>



Spring中的LOB类型处理
BLOB:主要用于存放数据量比较大二进制类型数据,如比较大图像,word文档之类
CLOB:存放文本类型数据

LOB数据处理类:LobHandler接口
LobHandler作用:
1.LOB数据的访问接口
2.LobCreator的生产工厂



NamedParameterJdbcTemplate类
和SimpleJdbcTemplate类(在JdbcTemplate类和NamedParameterJdbcTemplate类基础上加上了JAVA 5一些功能修饰)

DataSource接口系列:数据库连接
自定义datasource,扩展自AbstractDataSource

JdbcDaoSupport:所有基于JDBC进行数据访问的DAO实现类的超类

------------基于操作对象访问-----------------
RdbmsOperation主要分为三个分支:
1.查询操作对象分支(以SqlQuery为基础)
2.更新操作对象分支(以SqlUpdate为基础)
3.存储过程对象分支(以StoredProceture为基础)

0 0