`
gongmingwind
  • 浏览: 578453 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

(转)Spring DAO层的设计思想

阅读更多
前言

近几年持久化技术领域异常喧嚣,各种框架雨后春笋般地冒出,Sun也连接不断地颁布几个持久化规范。Spring对多个持久化技术提供了集成的支持,包括 Hibernate、iBatis、JDO、JPA、TopLink,此外,还通过Spring JDBC框架对JDBC API进行简化。Spring面向DAO制定了一个通用的异常体系,屏蔽具体持久化技术的异常,使业务层和具体的持久化技术达到解耦。此外,Spring 提供了模板类简化各种持久化技术的使用。通用的异常体系及模板类是Spring整合各种五花八门持久化技术的不二法门,Spring不但借此实现了对多种持久化技术的整合,还可以不费吹灰之力整合潜在的各种持久化框架,体现了“开-闭原则”的经典应用。


Spring的DAO理念
DAO(Data Access Object)是用于访问数据的对象,虽然我们在大多数情况下,将数据保存在数据库中,但这并不是唯一的选择,你也可以将数据存储到文件中或LDAP中。DAO不但屏蔽了数据存储的最终介质的不同,也屏蔽了具体的实现技术的不同。

  早期,JDBC是访问数据库的主流选择,近几年,数据持久技术获得了长足的发展,Hibernate、iBatis、JPA、JDO成为持久层中争放异彩的实现技术。只要为数据访问定义好DAO接口,并使用具体的技术实现DAO接口的功能,你就可以在不同的实现技术间平滑的切换。


  



  图 1 业务层通过DAO接口访问数据

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

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

  Spring本质上希望以统一的方式整合底层的持久化技术:以统一的方式进行调用及事务管理,避免让具体的实现侵入到业务层的代码中。由于每个持久化实现技术都有各自的异常体系,所以Spring提供了统一的异常体系,使不同异常体系的阻抗得以弥消,方便定义出和具体实现技术无关的DAO接口,以及整合到相同的事务管理体系中。


转自:http://tech.ddvip.com/2008-12/122846308697708.html
  • 大小: 10.4 KB
分享到:
评论

相关推荐

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...

    springmybatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...

    参考论文8-基于SSH在线拍卖系统设计与实现.doc

    目 录 1. 绪论 ...5.2 实现系统的DAO层 (20) 5.3 实现系统Web层 (20) 5.4 实现系统视图层 (21) 6. 系统测试 6.1 测试目的 (23) 6.2测试方案及测试用例 (23) 7. 结论 (25) 参考文献 (26) 致 谢 (28)

    Spring-Boot的Dubboxboot-dubbo.zip

    1、微内核2、配置简单3、模块化4、开箱即用5、完全兼容Spring6、设计理念极其先进,很多思想来自OSGi,但是在现有技术的实现  缺点:  二次改造定制难缺少成熟的SOA或者RPC框架Dubbox:  1、完全兼容...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...

    SSH整合(struts2+hibernate+spring)

    用SSH做的简易论坛系统,功能算丰富,CRUD,...开始先要对板块插入数据,表可以用hibernate的自动创建,hibernate和spring用的都是注解技术,dao层用了江南白衣的思想,已封装,测试过,我没发现bug,希望对你有所帮助

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    软件系统设计方案.pdf

    SpringMVC是使⽤了MVC设计思想的轻量级web框架,对web层进⾏解耦,与Spring⽆缝衔接,有着灵 活的数据验证,格式化,数据绑定机制;Mybatis中数据库的操作(sql)采⽤xml⽂件配置,解除了sql和代码的耦合提供映射标签...

    基于SSM+vue毕设管理系统+vue(源码+部署说明+演示视频+源码介绍).zip

    后端源码:包括了SSM框架的配置、实体类、DAO层、Service层、Controller层等代码,以及数据库脚本等文件。 前端源码:包括了Vue.js项目的配置文件、组件、路由、状态管理等代码,以及静态资源文件(如CSS、图片等)...

    基于SSH架构的在线答疑系统.doc

    4.3 DAO(数据访问对象层)的实现 25 4.3.1编写DAO接口 26 4.3.2编写实现类 26 4.4 Service层(业务逻辑层)的实现 27 4.5 Web层的实现 28 4.6本章总结 28 第五章 智能答疑搜索子系统 29 5.1全文搜索技术的引入 29 5.2 ...

    framework:基于最新的Spring Boot 2.2.0稳定版,天然的前后端分离设计思想。简单、便捷、易拓展,致力于成为中小企业开发的利器

    简化企业级的线程开发的难度集成Druid连接池和监控技术使用Mybatis-Plus来简化Dao层开发,做到单表业务无SQL。屏蔽复杂的PageHelper分页插件,使用内置的IPage进行分页,简单便捷拦截常见CSRF攻击和SQL注入,保护Web...

    基于maven项目的SSM框架与layu前端框架的代码

    iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain ...

    百度地图毕业设计源码-MyStudyNote:我的学习历程笔记

    系统搭建:采用当前软件行业比较流行的JavaWeb技术,运用MVC分层设计思想,使用Hibernate+Spring+SpringMVC来搭建环境,设计实体类(entity)、数据库访问类(dao)、服务类(service)、控制层类(web/controller)...

    iBATIS实战

    11.4 创建自己的DAO层 211 11.4.1 从实现中分离出接口 212 11.4.2 创建一个工厂以解耦 212 11.5 小结 214 第12章 扩展iBATIS 215 12.1 理解可插拔组件的设计 215 12.2 使用自定义类型处理器 217 12.2.1 实现自定义...

    基于SSH+DWR的Web开发框架研究与应用 (2010年)

    结合分层设计的思想和目前一些流行开发框架的特点,给出一种基于SSH+DWR的新型Web框架设计与研究,以面向接口编程方式设计程序的各层,以Struts将表示层与业务层解耦,以Hibernate应用DAO模式将业务层与持久层解耦,...

    java面试题

    spring使用AOP面向切面的思想进行事务管理的。 spring和Hibernate继承后,定义事务管理特性的时候查询为什么要定义为read-only? 答:因为添加、删除和更新都涉及到了数据库的修改,而查询并未涉及到数据库修改,...

    基于JavaEE的快速开发框架

    Spring仍旧是核心的组件,当然仍旧没有使用太多的Spring,因为我觉得Spring后面的很多功能已经背离了早先的设计思想,变成一个想包罗万象的大家伙。Tephra中对于Spring的使用仍旧仅局限于IoC和AOP,因为我觉得这哥俩...

    支持多数据库的ORM框架ef-orm.zip

    EF的设计思想是使人早日摆脱拼装SQL/HQL/JPQL的困扰,而是用(更精简易用的)Criteria API来操作数据库。 基于轻量级Criteria API的操作方式,使得对数据库的变更和重构变得非常轻松,解决了SQL语句多对软件...

Global site tag (gtag.js) - Google Analytics