DAO(Data Access Object)用于访问数据的对象,DAO 屏蔽了数据储存的最终介质和具体的实现技术细节;
Spring 提供了一套完善的DAO体系,用于屏蔽各种持久化技术的实现细节,以统一的管理方式进行管理;
统一的DAO异常体系
Spring 提供了一套和实现技术无关的、面向 DAO 层语义的异常体系,并通过转换器将不同的持久化技术的异常转换为Spring 的异常;
Spring DAO异常体系
Spring 以分类的方式建立了异常分类目录,对于大部分应用来说,该异常分类目录对于异常类型的划分具有适当的颗粒度;
异常转换器
对于不同持久化技术的异常转换为 Spring DAO异常,Spring 提供以下的异常转化器:
持久化技术 | 异常转化器 |
JDBC | org.springframework.jdbc.support.SQLExceptionTranslator |
Hibernate | org.springframework.orm.hibernateX.SessionFactoryUtils |
MyBatis | 使用JDBC的异常转化器 |
JPA | org.springframework.orm.jpa.EntiryManagerFactoryUtils |
JDO | org.springframework.orm.jdo.PersistenceManagerFactoryUtils |
※ Spring 4.0 对于 Hibernate 只支持 Hibernate 3.6 之后的版本;
数据访问模板支持
Spring DAO 为不同持久化技术提供了统一的模板,分别提供不同的模板类给予支持;
持久化技术 | 模板类 | 支持类 |
JDBC | org.springframework.jdbc.core.JdbcTemplate | org.springframework.jdbc.core.JdbcSupport |
Hibernate | org.springframework.orm.hibernateX.HibernateTemplate | org.springframework.orm.hibernateX.HibernateDaoSupport |
MyBatis | 直接使用 JDBC 的模板类和支持类 | |
JPA | org.springframework.orm.jpa.JpaTemplate | org.springframework.orm.jpa.JpaDaoSupport |
JDO | org.springframework.orm.jdo.JdoTemplate | org.springframework.orm.jdo.JdoDaoSupport |
数据源配置
对于任何持久化技术,都需要数据连接,Spring 中数据连接时以通过数据源获取的;
Spring 主要使用的数据源有3种:
- Apache DBCP 数据源
- C3P0 数据源
- JNDI 数据源
DBCP 数据源
<