第一节:Spring的数据访问哲学
Spring的目标之一就是允许开发人员进行程序开发时可以遵循面向对象中的 的原则–“针对接口编程”
1Spring数据访问异常体系
1.1传统的JDBC 异常:
只有类似于SQLException这种很笼统的异常,很是鸡肋,基本上没啥用
1.2Spring Dao层的访问异常体系:
首先 SpringDao层的异常体系是平台无关的,也就是说不管你用hibernate还是MyBaties或者其他的ORM框架,Spring都会抛出一致的异常。这样也将我们选择的持久化机制与数据访问层隔离出来,耦合性低。
2数据访问模板化
2.1Spring将数据访问过程中固定的和可变的明确划分为2个类别,即模板和回调
a模板类(固定的):
准备资源
开始事务
提交、回滚事务
关闭资源
处理异常
b回调类
在事务中的执行
返回数据
2.2Spring 提供了多个模板,例如jdbcTemplate HibernateTemplate JpaTemplate
不仅如此,还为这些模板提供了Dao支持类,例如jdbc.core.support.HibernateDaoSupport 下面我们来看看什么是DAO支持类。
3DAO支持类
3.1数据访问模板只是访问流程中的一部分,基于模板-回调设计,Spring提供了Dao支持类,开发时,我们自己编写的Dao类作为 Dao支持类的子类,并调用模板获取方法来访问底层的数据访问模板
第二节:Spring配置数据源
不管选择哪种Spring Dao 的支持方式,我们都需要在Spring 容器中配置一个数据源应用的bean,一共有以下三种方式配置数据源的引用
1通过JDBC驱动程序定义的数据源
2通过JNDI查找的数据源
3连接池的数据源
1使用JNDI数据源
可能大家会对JNDI有点陌生,先来简单的解释一下JNDI吧。
来来来,先举个栗子:
如果咱们不用JNDI,在做开发时,可能是下面这样来配置数据源的
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<!-- 指定连接数据库的URL -->
<property name="jdbcUrl" value="jdbv:mysql://localhost:3306......" />
<!-- 指定连接数据库的用户名 -->
<property name="user" value=