快速业务通道

Spring DAO层的设计思想 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

Spring DAO层的设计思想

时间:2011-01-27 陈雄华

近几年持久化技术领域异常喧嚣,各种框架雨后春笋般地冒出,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接口的功能,你就可以在不同的实现技术间平滑的切换。

Spring DAO层的设计思想 - 编程入门网

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

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

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

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号