设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 软件教学 >> 编程开发 >> 面向对象的应用服务层设计
精品推荐
编程开发点击TOP10
·Java进阶:JNI使用技巧点滴
·专家手把手教你安装MYSQL数据库
·e书工场--制造电子书全攻略
·删除流氓的SQL Server2005
·我的第一个VB程序--“跟我来学VB神童教程”
·Authorware自制拼图游戏
·使用Quick CHM软件轻松编译CHM格式的文件
·DIY自己常用的软件eXeScope
·用Authorware制作自检测在线答题系统
·精细讲述SQL Server数据库备份多种方法
软件教学点击TOP10
·自己动手制作USB启动盘快速简单
·学用金山游侠修改游戏
·几百个软件注册机
·常用软件序列号
·用eBook Edit 自己动手制作exe型电子书
·应用软件注册码大全(最新整理) 1
·Windows Media Player同步歌词秀全攻略
·五分钟玩转电脑迷共享空间
·冰点还原(DeepFreeze)使用帮助
·液晶显示器测试小工具--Monitors Matter CheckScreen
精选专题

面向对象的应用服务层设计

作者: 来源:网络文章 时间:2005-12-13 15:04:16

面向对象的应用服务层设计(5)
因为数据库是最常用,也是最有效的数据存储方法,因此,支持数据库存储是最首先必须支持的。在不同的平台下,有不同的数据库访问的手段。例如,在Java平台下,有JDBC,在Windows平台下,可以使用ADO、ADO.Net等。但是,这些手段还比较接近底层,在实际操纵数据库的时候,需要编写大量的代码,并且,我们还需要通过手工的方式来完成将程序中的面向对象的数据存储到关系型数据库的工作。这么做,自然编程的效率不高,并且非常容易出错。但是,不可否认,这也是一种可以选用的方式。

从另外一个方面来看,由于我们前面已经解决了数据的映射问题,因此,在数据的存取方面是非常有规律的,我们完全可以让这个工作通过框架来执行。这样,我们一方面可以简化很多同数据库交互方面的代码编写工作量,能够减少出现Bug的几率,另一方面,由于框架封装了不同数据库之间的差异,使得我们在编写程序的时候,不用考虑不同数据库之间的差异,而将这个工作交给框架去做,实现软件的后台数据库无关性。

在这个部分,以下两个部分的类会显得特别重要:

◆对象--关系映射的分析类,能够通过既定的方案完成对象--关系的映射,确定数据存取方案

◆数据库操纵类:根据映射关系,将数据准确的存储到数据库中,并且封装不同数据库之间的差异。

这个部分的操作过程,可以用图大概的表示如下:



在J2EE中,这个部分比较典型的就是EntityBean中的CMP。由于在BMP中,同数据库的交互部分需要通过手工编写代码的方式来实现,因此,很难享受到容器带来的便利,只是由于EJB2.0以前的标准,CMP的功能,包括映射能力、实体关系模式等方面的功能比较弱,所以,在很多时候,我们不得不使用BMP。现在,EJB2.0,在这个方面的功能已经非常强大了,我们完全可以享受容器带来的便利,而将大部分精力放在实现更加复杂的业务逻辑方面了。

在JDO中,您同样可以通过PersistenceManager来实现同样的目标,例如,您想把一个Customer对象保存到数据库中,可以采用类似于下面的代码:

Customer customer=new Customer(……);
PersistenceManager PM=PMFactory.initialize(……);
Pm.persist(customer);



代码同样非常简明和直观,没有一大堆数据库操纵的代码,也不容易发生差错。

Websharp的方案

Webshap为数据存取的类定义了IEntityDAO接口,该接口的定义如下:

public interface IEntityDAO
{
void InsertEntity(EntityData entity);
void UpdateEntity(EntityData entity);
void DeleteEntity(EntityData entity);
EntityData FindByPrimaryKey(object KeyValue);
}



对于每一个实体类,可以通过扩展这个接口来实现数据访问的类。但是,由于这个接口没有提供任何实现方法,因此,到具体每个实现类的时候,如果是直接扩展自这个接口,实现的代码还必须手工填写。为了提高开发效率,减少代码编写量和出现Bug的可能性,框架提供了AbstractSingleTableDAO和AbstractMultiTableDAO.CS类,这两个类扩展自IEntityDAO,分别实现了针对单个数据库表和多个数据库表的数据库访问方法,并且,实现了IDisposable接口。这样,我们在实际编写代码的时候,只需要继承自这两个类就可以了。
共8页 9 7 [1] [2] [3] [4] [5] [6] [7] [88 :>

面向对象的应用服务层设计 相关文章:
面向对象的应用服务层设计 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com