SPRING数据访问对象(DAO)框架入门
日期:2007年10月14日 作者: 查看:[大字体 中字体 小字体]-
摘要 J2EE应用程序中的业务组件通常使用JDBC API访问和更改关系数据库中的持久数据。这经常导致持久性代码与业务逻辑发生混合,这是一种不好的习惯。数据访问对象(DAO)设计模式通过把持久性逻辑分成若干数据访问类来解决这一问题。
本文是一篇关于DAO设计模式的入门文章,突出讲述了它的优点和不足之处。另外,本文还介绍了Spring 2.0 JDBC/DAO框架并示范了它如何妥善地解决传统DAO设计中的缺陷。
传统的DAO设计
数据访问对象(DAO)是一个集成层设计模式,如Core J2EE Design Pattern 图书所归纳。它将持久性存储访问和操作代码封装到一个单独的层中。本文的上下文中所提到的持久存储器是一个RDBMS.
这一模式在业务逻辑层和持久存储层之间引入了一个抽象层,如图1所示。业务对象通过数据访问对象来访问RDBMS(数据源)。抽象层改善了应用程序代码并引入了灵活性。理论上,当数据源改变时,比如更换数据库供应商或是数据库的类型时,仅需改变数据访问对象,从而把对业务对象的影响降到最低。

图1. 应用程序结构,包括DAO之前和之后的部分
讲解了DAO设计模式的基础知识,下面将编写一些代码。下面的例子来自于一个公司域模型。简而言之,这家公司有几位员工工作在不同的部门,如销售部、市场部以及人力资源部。为了简单起见,我们将集中讨论一个称作“雇员”的实体。
针对接口编程
DAO设计模式带来的灵活性首先要归功于一个对象设计的最佳实践:针对接口编程(P2I)。这一原则规定实体必须实现一个供调用程序而不是实体自身使用的接口。因此,可以轻松替换成不同的实现而对客户端代码只产生很小的影响。
我们将据此使用findBySalaryRange()行为定义Employee DAO接口,IEmployeeDAO.业务组件将通过这个接口与DAO交互:
import java.util.Map;
public interface IEmployeeDAO {
//SQL String that will be executed
public String FIND_BY_SAL_RNG = "SELECT EMP_NO, EMP_NAME, "
+ "SALARY FROM EMP WHERE SALARY >= ? AND SALARY <= ?";//Returns the list of employees who fall into the given salary
//range. The input parameter is the immutable map object
//obtained from the HttpServletRequest. This is an early
//refactoring based on "Introduce Parameter Object"public List findBySalaryRange(Map salaryMap);
}提供DAO实现类
接口已经定义,现在必须提供Employee DAO的具体实现,EmployeeDAOImpl:
import java.sql.Connection;
- [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页
-
- SPRING数据访问对象(DAO)框架入门 相关文章:
- ·三维景观软件Vue 5 Esprit函数碎片节点
- ·掌握SQL Server数据库的实用技巧
- ·Oracle非法数据库对象引起的错误
- ·SuSE Linux10上安装Oracle数据库方法
- ·SQL Server中函数的用法两种
- ·sqlldr加载数据到不同表的问题
- ·三维景观软件Vue 5 Esprit函数纹理图节点
- ·刷屏下载器篡改系统参数下载病毒
- ·一位拥有5位数QQ号码用户的自白
- ·在不同版本的SQL Server中存储数据
- SPRING数据访问对象(DAO)框架入门 相关软件
- ·Excel2003函数应用完全手册
- ·数字密码
- ·数独变种 汉化版
- ·《魔兽》地图:TD-数码宝贝-无限地带II1.0修正
- ·完美数独
- ·儿童数学启蒙教育亲子互动版v6.0
- ·历代CPU最全明细参数表
- ·数字祖玛大串连
- ·IT世界数字.魅力杂志创刊号
- ·中兴数据通信产品速查手册V4
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:编辑Java类对象
精品推荐
热点TOP10
- ·JAVA教程 第五讲 AWT图形用户界面设计
- ·SP 短信开发-基础知识篇
- ·使用JAVAMAIL发邮件的一个例子(转)
- ·J2ME蓝牙程序开发实战入门
- ·用Java实现音频播放
- ·使用SimpleDateFormat必须注意的问题
- ·Sun:JavaFX Mobile和JavaFX Script
- ·Java EE6提案的两大主题:拓展性和概要
- ·Java会因为RoR的流行而过时吗?
- ·Java资料:Swing中的事件处理详细资料
- ·Java知识:Web应用下实现定时任务简便方法
- ·技巧:Java中用动态代理类实现记忆功能
- ·新手入门:写Java程序的三十个基本规则
- ·入门:Java初学者入门要注意的基础知识
- ·Java SE 6中XML数字签名标准Java接口
- ·JForum 2.1.7 源程序编译草记
- ·Spring中的Template和Callback模式
- ·从集合类的升级联想到Java适配器模式
- ·I18N-国际化消息和日志
- ·通过JDMK 进行遗留系统管理
特别推荐
- ·Java精华积累:初学者都应该搞懂的问题
- ·Java多媒体框架设计自动播放机实例详解
- ·如何有效防止Java程序源码被人偷窥?
- ·Cell插件在J2EE系统中的应用
- ·初学者想学Hibernate,初级基础教程
- ·Java语言实现支持视频点播的WEB服务器
- ·关于Java编程的中文问题的几条分析原则
- ·确保J2ME无线移动商业应用程序的安全性
- ·Java开源技术:Eclipse的使用技巧详解
- ·新手入门:Java中的修饰词使用方法总结
- ·JAVA开发者应该去的20个英文网站
- ·使用JDBC创建数据库访问程序
- ·JDK的命令详解
- ·Java学习从入门到精通(附FAQ)
- ·Tomcat性能调整
- ·JSF:Java中面向Web开发的生旦净末丑
- ·对Java语言入门初学者的一些建议
- ·Java技术的新方向
- ·Jive源代码研究
- ·谨慎使用Date和Time类
