Spring对DAO的支持

  随着持久化技术的持续发展,Spring对多个持久化技术提供了集成支持,包括Hibernate、MyBatis、JPA、JDO;此外,还提供了一个简化JDBC API操作的Spring JDBC框架。Spring面向DAO指定了一个通用的异常体系,屏蔽具体持久化技术的异常,使业务层和具体的持久化技术实现解耦。

Spring的DAO理念

  DAO(Data Access Object)是用于访问数据的对象,DAO不但屏蔽了数据储存的最终介质的不同,也屏蔽了具体的实现技术的不同。

  近几年,各种数据持久化技术得到了长足发展,Hibernate、MyBatis、JPA、JDO成为持久层中常用的实现技术。只要为访问数据定义好DAO接口,并且使用具体技术实现DAO接口的功能,就可以在不同的实现技术间平滑切换。

  图中,在UserDao中定义访问User数据对象的接口方法,业务层通过UserDao操作数据,并使用具体的持久化技术实现UserDao接口方法,这样业务层和具体的持久化技术就实现了解耦。

  提供DAO层的抽象可以带来一些好处:首先,可以很容易地构造模拟对象,方便单元测试的开展;其次,在使用切面时会有更多选择,既可以用JDK动态代理,又可以使用CGLib动态代理。

  Spring本质上希望以统一的方式整合底层的持久化技术,即以统一的方式进行调用及事务管理。由于每种每种持久化技术都有各自的异常体系,所以Spring提供了统一的异常体系,方便定义出和具体实现技术无关的DAO接口,以整合到相同的事务管理体系中。

  


统一的异常体系:

  统一的异常体系是整合不同的持久化技术的关键。Spring提供了一套和实现技术无关的、面向DAO层语义的异常体系,并通过转换器将不同持久化技术的异常转换成Spring的异常。


统一数据访问模板:

  在使用JDBC数据访问操作中一般按以下流程进行:

    (1)准备资源

    (2)启动事务

    (3)在事务中执行具体的数据访问操作

    (4)提交/回滚事务

    (5)关闭资源,处理异常。

  按照传统方式,在编写任何带事务的数据访问程序时,都要重复上面的代码,而其中只有加粗的部分是和业务相关的,其他都是重复的内容。

  Spring将这个相同的数据访问流程固化到模板类中,并将数据访问中固定和变化的部分分开,同时保证模板线程类是线程安全的,以便多个数据访问线程共享同一个模板实例。这样,只要编写好回调接口,并调用模板类进行数据访问,就可以得到想要的结果:数据访问成功执行,前置和后置的模板化工作也按顺序执行,提高开发效率的同时保证了资源使用的正确性,消除了因忘记释放资源而引起的资源泄露问题。

最新文章

  1. html+css实现简易下拉菜单
  2. JAVA中的字符串小结
  3. [vim]的关键字补全
  4. jQuery前端验证多种方式
  5. BZOJ 2768 冠军调查(最小割)
  6. [工作技能]SVN
  7. 用 Javascript 获取页面大小、窗口大小和滚动条位置
  8. Android之天气APP
  9. 数值积分NIntegrate中的具体算法
  10. centos下的lnmp环境搭建
  11. Javascript 学习笔记 无缝滚动
  12. Quartz学习——Spring和Quartz集成详解(三)
  13. 多线程系列(四):Task
  14. 服务器控件的几个属性 SelectedIndex、SelectedItem、SelectedValue、SelectedItem.Text、selectedItem.value
  15. :before添加图片,IE8兼容
  16. Oracle管理文件OMF (oracle managed files)
  17. docker的安装与启动
  18. react表单事件和取值
  19. 005.MySQL双主-Master01可用配置
  20. 关于dubbo和zookeeper 注册中心

热门文章

  1. Argus--[优先队列]
  2. H3C 计算子网内可用主机地址数
  3. springboot+nginx+https+linux实现负载均衡加域名访问简单测试
  4. linux 内核定时器
  5. vue-learning:1 - 为什么选择vue
  6. SpringBoot --web 应用开发之文件上传
  7. Teleport ultra/IDM(Internet Download Manager)
  8. egg-socket在egg中的使用
  9. [板子]用线段树解决ST表问题
  10. Team Foundation Server 2015使用教程【1】:团队项目创建