Spring4--Spring对DAO的支持

背景

这一章主要介绍了Spring对持久化技术的支持,让我们更加专注于业务层的编码,避免繁琐的配置流程。

1.Spring的DAO理念

Spring4--Spring对DAO的支持_第1张图片

 在UserDao中定义访问User数据对象的接口方法,业务层通过UserDao操作数据,并使用具体的持久化技术

实现UserDao接口方法,这样业务层和具体的持久化技术就实现了解耦。

2.统一的异常体系

(1)Spring提供了一套和实现技术无关的、面向DAO层语义的异常体系,并通过转换器将不同持久化技术的异常转

换成Spring的异常。

Spring的异常体系建立在运行期异常的基础上,开发者可以根据需要捕捉感兴趣的异常。通过getCause()方法

获取原始的异常信息。

Spring4--Spring对DAO的支持_第2张图片

Spring4--Spring对DAO的支持_第3张图片

 (2)JDBC的异常转换器

在org.springframework.jdbc.support包中定义了SQLExceptionTranslator接口,该接口的两个实现类

SQLErrorCodeSQLExceptionTranslator和SQLStateSQLExceptionTranslator分别处理SQLException

中错误码和SQL状态码的翻译工作。

(3)其他持久化技术的异常转换器

Spring4--Spring对DAO的支持_第4张图片

3.统一数据访问模板

(1)固定的部分在模板类中已经准备好,而变化的部分通过回调接口开放出来,用于定义具体数据

访问和结果返回的操作。

 

Spring4--Spring对DAO的支持_第5张图片

(2)模板类:

在回调中编写具体的数据操作逻辑,使用模板执行数据操作,在Spring中,这是典型的数据操作模式。

Spring4--Spring对DAO的支持_第6张图片

(3)支持类: 不但包含数据访问模板,还包含数据源或会话等内容。通过扩展支持类定义自己的数据访问类

是最简单的数据访问方式。

 Spring4--Spring对DAO的支持_第7张图片

 4.数据源

Spring在第三方依赖包中包含了两个数据源的实现类包,一个是Apache的DBCP,另一个是C3P0。

(1)DBCP:

提高性能的配置建议:将testOnBorrow设置为false,而将testWhileIdle设置为true,再设置timeBetweenEvictionRunsMillis值。

配置的效果是DBCP将通过一个后台线程定时地对空闲连接进行检测,当发现无用的空闲连接(那些被数据库关闭的连接)时,

就会将他们清除。

(2)使用属性文件:

将数据源的配置信息独立到一个属性文件中,通过引入属性文件,以${xxx}的方式引用属性。

(3)获取JNDI数据源:

如果应用配置在高性能的应用服务器上,则可能希望使用应用服务器本身提供的数据源。应用服务器的数据源使用JNDI开放

调用者使用,Spring为此专门提供了引用JNDI数据源的JndiObjectFactoryBean类。

 通过jndiName指定引用的JNDI数据源名称。也可以通过jee命名空间,简化javaee资源的引用。

(4)Spring的数据源实现类:

DriverManagerDataSource,位于org.springframework.jdbc.datasource包中。它没有提供池化连接机制,每次调用

getConnection()方法获取新连接时,只是简单地创建一个新的连接。比较适合在单元测试或独立应用中使用。

Spring4--Spring对DAO的支持_第8张图片

 总结

Spring为了使不同的持久化技术能以统一的方式去使用,定义了Spring异常体系,模板类和回调接口,数据源。

 

你可能感兴趣的:(Spring4)