Part 1 零散的概念
DAO: 数据访问对象(data access object),提供数据访问和写入到数据库的一种方式,并通过接口发布功能,应用程序的其他部分就可以通过接口访问了。Spring提供DAO支持类,而将业务自己的DAO类作为它的子类。编写应用程序自己的DAO实现时,可继承DAO支持类,调用模板获取方法直接访问底层数据模板,也支持访问其与数据库通信的类
Spring提供很多数据访问异常(完善了JDBC简单的SQLException异常体制),且都继承自DataAccessException,非检查性异常,没有必要捕获。
数据访问模板化:Spring将数据访问过程中固定的和不可变的部分明确划分为两个不同的类,模板(template)和回调(callback)。针对不同的持久化平台,提供了多个模板。
Part2 配置数据源
使用JNDI数据源
<jee:jndi-lookup id = ”datasource”
jndi-name = ”/../..”
resource-name = ”true” />
jndi-name 指定JNDI中资源的名称, resourse-name应用程序应用在JAVA应用程序数据库中,值需为true,这样给定的jndi-name前会自动添加java:comp/env/前缀。
数据库连接池
Spring并没有提供其实现,可使用Jakarta Commons Database Connection Pooling(DBCP),最常用BasicDataSource,类似于Spring自带的DriverManagerDataScource:
<bean id = ”dataSource” class = ”org.apache.commons.dbcp.BasicDataSource”>
<property name = ”driverClassName” value = ”org.jsqldb.jdbcDriver”>
<property name = ”url” value = ”jdbc:hsqldb:hsql://localhost/../..”>
<property name = ”username” value = ””>
<property name = ”password” value = ””>
..
</bean>
基于JDBC驱动的数据源 Spring中的最简单配置方式,两种,DriverManagerDataSource(每个连接请求都返回新建连接) 和 SingleConnectionDataSource(每个连接请求都返回同一个连接),没有可配置的池相关属性。 均位于org.springframework.jdbc.datasource包中。
<bean id = ”dataSource”
class = ” org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name = ”driverClassName” value = ”org.jsqldb.jdbcDriver”>
<property name = ”url” value = ”jdbc:hsqldb:hsql://localhost/../..”>
<property name = ”username” value = ””>
<property name = ”password” value = ””>
</bean>
Part3 在Spring中使用JDBC
使用JDBC模板 Spring提供的3个模板JdbcTemplate,NamedParameterJdbcTemplate(已被合并到后者),SimpleJdbcTemplate。 配置SimpleJdbcTemplate:
<bean id = ”jdbcTemplate”
class =”org.springframework.jdbc.core.simple. SimpleJdbcTemplate”>
<constructor-arg ref = ”datasource”>
</bean>
装配Dao
<bean id = “xDao” class = “…”>
<property name = ”jdbcTemplate” ref = “jdbcTemplate”
</bean>
使用命名参数
使用JDBC DAO支持类
集成Hibernate或JPA