spring3.x第八章 Spring对DAO的支持
来源:互联网 发布:java中类名的命名规则 编辑:程序博客网 时间:2024/05/20 11:35
8.1 Spring的DAO理念
DAO(Data Access Object)用于访问数据的对象,虽然我们在大多数情况下,将数据保存在数据库中,但用户也可以将数据存储到文件中或LDAP中,DAO不但屏蔽了数据存储的最终介质的不同,也屏蔽了具体的实现技术的不同。
8.2 统一的异常体系
Spring提供了一套和实现技术无关的、面向DAO层语义的异常体系,并通过转换器将不同持久化技术的异常转换成Spring的异常。
8.2.1 Spring的DAO异常体系
Spring的异常体系都是建立在运行期异常的基础上,开发者可以根据需要捕捉感兴趣的异常。
8.2.2 JDBC的异常转换器
传统的JDBC API在发生几乎所有的数据操作问题都抛出相同的SQLException,它将异常的细节性信息封装在异常属性中:错误码(getErrorCode())和SQL状态码(getSQLState())。
8.2.3 其他持久技术的异常转换器
在org.springframework.orm包中。
8.3 统一数据访问模板
8.3.1 使用模板和回调机制
JDBC数据访问操作按一下的流程进行:
1.准备资源
2.启动事务
3.在事务中执行具体数据访问操作
4.提交/回滚事务
5.关闭资源,处理异常
按照传统的方式,编写任何带事务的数据访问的程序时,都需要重复编写上面的代码。
8.3.2 Spring为不同持久化技术所提供的模板类
所有的支持类都是abstract的,其目的使希望被继承使用,而非直接使用。
8.4 数据源
8.4.1 配置一个数据源
Spring在第三方依赖包中包含了两个数据源的实现类包:其一是Apache的DBCP;其而是C3P0。可以在Spring配置文件中利用这两者中的任何一个配置数据源。
DBCP数据源
DBCP是一个依赖commons-pool对象池机制的数据库连接池。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://localhost:.3309/sampledb" p:username="root" p:password="123456" />
BasicDataSource提供了close方法关闭数据源,所以必须设定destroy-method=”close”属性。
C3P0数据源
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" p:driverClass="oracle.jdbc.driver.OracleDriver" p:jdbcUrl="jdbc:oracle:thin:@localhost:1521:ora9i" p:username="root" p:password="123456" />
使用属性文件
<context:property-placeholder location="/WEB-INF/jdbc.properties" /><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destory-method="close" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}"
在jdbc.properties属性文件中定义属性值
jdbc.driverClassName=com.mysql.jdbc.Driver...
8.4.2 获取JNDI数据源
如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身提供的数据源。
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" p:jndiName="java:comp/env/jdbc/bbt" />
8.4.3 Spring的数据源实现类
DriverManagerDataSource,没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接,用于单元测试。
DriverManagerDataSource ds = new DriverManagerDataSource();ds.setDriverClassName("com.mysql.jdbc.Driver");ds.setUrl("jdbc:mysql://localhost:3306/sampledb");ds.setUsername("root");ds.setPassword("123456");Connection actualCon = ds.getConnection();
8.5 小结
Spring支持目前大多数常用的数据持久化技术,定义了一套面向DAO层的异常体系。
不管采用何种持久化技术,访问数据的流程是相对固定的。并以模版的方式定义好流程。
- 第八章 Spring 对 DAO 的支持 《Spring3.x》
- spring3.x第八章 Spring对DAO的支持
- [Spring3.x] 第 8 章 Spring 对 DAO 的支持
- 第十章 Spring对DAO的支持
- Spring对DAO的支持(精通Spring+4.x++企业应用开发实战 第十章)
- spring对DAO的支持
- spring对DAO的支持
- spring对DAO的支持
- spring对Dao的支持
- 小曹学spring--Spring对DAO的支持
- Spring JDBC-Spring对DAO的支持
- Spring对JDBC的DAO支持
- 【转】 Spring对DAO的支持
- 8 Spring对DAO的支持
- 【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3
- c语言调用c语言的so动态库
- 线程池
- css trasition-duration transition-property属性
- 秒杀系统架构分析与实战
- Looper Handler MessageQueue源码解析
- spring3.x第八章 Spring对DAO的支持
- Spring入门之面向切面的Spring
- 正则表达是解析HTML元素的代码记录
- 欢迎使用CSDN-markdown编辑器
- ActiveMq 安装使用
- J2Cache简单使用
- Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
- memcache与memcached的区别
- php程序效率优化的一些策略小结