(笔记)Spring实战_征服数据库(1)_Spring的数据访问哲学

DAO是数据访问对象(data access object)的缩写。DAO提供了数据读取和写入到数据库中的一种方式。它们应该以接口的方式发布功能,而应用程序的其他部分就可以通过接口来访问了。
数据访问层是以持久化技术无关的方式来进行访问的。持久化方式的选择独立于DAO,只有相关的数据访问方法通过接口来进行发布。这可以实现灵活的设计并使得切换持久化框架对应用程序其他部分所带来的影响最小。
倾向于将持久层隐藏在接口之后 .. 接口是实现松耦合代码的关键。
为了实现将数据访问层与应用程序的其他部分隔离开来,Spring采用了一个方式就是提供贯穿整个DAO框架的统一异常体系。
1.了解Spring的数据访问异常体系
JDBC SQLException:SQLException被视为处理数据访问所有问题的通用异常。对于所有的数据访问问题都会抛出SQLException,而不是对每种可能的问题都会有不同的异常类型。
Hibernate:提供了20个左右的异常,分别对应于特定的数据访问问题。这样就可以针对想处理的异常编写catch代码块。即便如此,Hibernate的异常是其本身所特有的。我们想使特定的持久化机制独立于数据访问层。如果抛出了Hibernate所特有的异常,那么对Hibernate的使用将会渗透到应用程序的其他部分。
Spring的平台无关持久化异常
Spring几乎为读取和写入数据库的所有错误都提供了异常。
我们可以使用Spring抛出一致的异常,而不用关心所选择的持久化方案。这有助于我们将所选择持久化机制与数据访问层隔离开来。
DataAccessException只是Spring处理检查型异常和非检查型异常哲学的一个范例。Spring认为触发异常的很多问题是不能再catch代码块中修复的。Spring使用了非检查异常,而不是强制开发人员编写catch代码块(里面经常是空的)。
为了利用Spring的数据访问异常,就需要使用Spring所提供的数据访问模板。
2.数据访问模板化
模板方法定义了过程的主要框架。
模板方法将过程中与特定实现相关的部分委托给接口,而这个接口的不同实现定义了过程中的具体行为。
Spring将数据访问过程中固定的和可变的部分明确划分为两个不同的类:模板和回调。模板管理过程中固定的部分,而回调处理自定义的数据访问代码。

模板类(org.springframework.*)用途
jdbc.core.JdbcTemplateJDBC连接
jdbc.core.simple.SimpleJdbcTemplate通过java5简化后的JDBC连接
orm.hibernate3.HibernateTemplateHibernate 3.x的Session
orm.jpa.JpaTemplateJava持久化API的实体管理器

使用数据访问模板只需将其配置为Spring上下文中的Bean并将其织入到应用程序的DAO中。或者,你还可以使用Spring的DAO支持类进一步简化应用程序的DAO配置。
3.使用DAO支持类
当编写应用程序自己的DAO实现时,可以继承自DAO支持类并调用模板获取方法来直接访问底层的数据访问模板。
另外,如果你需要访问底层的持久化平台,则每个DAO支持类都能够访问其与数据库进行通信的类。

DAO支持类(org.springframework.*)为谁提供DAO支持
jdbc.core.support.JdbcDaoSupportJDBC连接
jdbc.core.simple.SimpleJdbcDaoSupport通过java5简化后的JDBC连接
orm.hibernate3.support.HibernateDaoSupportHibernate 3.x的Session
orm.jpa.support.JpaDaoSupportJava持久化API的实体管理器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值