1.Spring对DAO技术提供了那些支持
Spring对JDBC等数据库访问技术编写DAO提供以下几个重要支持
Spring对DAO异常提供了统一处理
Spring对DAO编写提供了支持的抽象类
提高编程效率,减少JDBC编码量
2.Spring对DAO异常支持
Spring把特定某种技术的异常,如SQLException,统一装换为自己的异常类型,这些异常以DataAccessException
为父类,它们封装了原始异常对象,不会丢失原始错误信息
DataAccessException继承于RuntimeException,是非检查异常,不会因为没有处理异常而出现编译错误
异常必须处理,可以用拦截器或则界面统一处理
3.Spring对DAO编写支持
Spring为了便于一种一致的方式使用各种数据访问技术,如JDBC、和Hibernate,Spring提供了一套抽象的
DAO类。这些抽象类提供了一些方法,通过他们可以获得与数据库访问技术相关的数据源和其他配置信息。
JdbcTemplate 封装常用的JDBC方法
HibernateTemplate 封装常用Hibernate方法
JDBCDaoSupport JDBC数据访问对象的基类
HibernateDaoSupport Hibernate数据访问对象的基类
4.JdbcDaoSupport
JdbcDaoSupport是利用JDBC技术编写DAO的父类,通过该类提供的方法,便于获取Connection和JdbcTemplate
等对象信息
JdbcDaoSupport使用时需要注入一个DataSource对象
JdbcDaoSupport对代码有一定的侵入性
5.JdbcTemplate
JdbcTemplate封装了连接获取以及连接释放等工作,从而简化了我们对JDBC的使用,避免忘记关闭连接等错误
JdbcTemplate提供了一下主要方法
queryForInt()
queryForObject()
query()
update()
execute()
6.如何编写DAO组件
基于JDBC技术编写DAO组件可以采用下面两种模式
1.DAO继承JdbcDaoSupport,通过getJdbcTemplate()方法获取JdbcTemplate对象,需要在
DAO实现类中注入一个DataSource对象来完成JdbcTemplate的实例化
2.DAO不继承JdbcDaoSupport,在Spring容器中配置JdbcTemplate,然后注入给DAO实现类(更为优雅)
7.继承JdbcDaoSupport的用法-DAO配置
<bean id="myDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="lu123456"></property>
</bean>
<!-- 继承JdbcDaoSupport -->
<bean id="jdbcEmpDao1" class="org.tarena.dao.JdbcEmpDao1">
<property name="dataSource" ref="myDataSource"></property>
</bean>
8.不继承JdbcDaoSupport的用法-DAO配置
<!-- 不继承JdbcDaoSupport -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDataSource"></property>
</bean>
<bean id="jdbcEmpDao2" class="org.tarena.dao.JdbcEmpDao2">
<property name="template" ref="jdbcTemplate" ></property>
</bean>