当前位置: 网学 > 编程文档 > 其他类别 > 正文

系统架构师谈企业应用架构之数据访问层

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
必须提供事务的管理,可以说不提供事务操作的数据访问层就没有办法使用,因为这样的数据访问层构建的系统是不安全的。特别是批量持久

化的过程中,事务不但能够减少与数据库操作的次数,而且根据事务的四个特性可以提供更好的安全性。我们来回顾下事务的四个特性:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/0D122121475.png" />

我想我这里就不用一一解释了,大家都明白的。我们在数据访问层的设计中是通过引入

“工作单元”来实现事务管理的,工作单元后面会讲述到工作单元内提供的方法及事务性。

最后、数据访问层必须提供处理并发的功能,我们在系统访问的人较多的情况时肯定会出现并发的情况,数据访问层如何处理这样的情况就显得极其重要了,在

一个多用户并发的系统中,通过前面提到的事务来处理,这时候可能就会出现数据库完整性的问题,例如这样的情况,一个用户现在在编辑自己的个人信息,例如将生

日修改为1985年3月20日,这个用户对应的ID是298,这时候他只是修改了,但是还没有提交,此时管理员也修改了,比如说修改了ID为298的这个用户信息的地址或

者其他信息,并且提交,此时,用户将自己编辑的生日提交了,那么数据库中对应的ID为298的数据信息就会是最新修改的数据信息,那么之前管理员修改的数据信息

就会发生丢失,虽然是修改的可能字段不是同一个字段,这就和我们底层实现的数据访问层有关,当然如果说我们在数据访问层实现了,只更新修改过的数据列的值的

话,那么可能不会存在这样的情况,当然这就和我们底层实现的数据访问层的机制有关。

下面我们通过图形的方式来说明,更容易理解:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/28122121395.png" />

我们来看看可能的几种方案,可以对这样的并发做出相应的处理?

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/BE122121744.png" />

当然这里只是提供了几个简单可行的办法,当然如果大家还

有更好的办法,可以告诉我,不胜感激。

当然上面的四个基本职责是我们在数据访问层必须提供的,还应该提供缓存机制,延迟加载等等包括一些性能方面的优化的设计等,这些都在后面讲解吧。

下面我们来看看数据访问层与其他层直接的关系与交互,我们前面说过,在领域模型下,业务逻辑层中的数据的持久化都是通过服务层来完成的,下面我们来看

看各层之间的关系。我们先来看看服务层与数据访问层之间的关系。

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/46122121105.png" />

服务层与数据访问层之间进行交互,服务层通过DTO与UI层进行交互,服务层通过组织业务逻辑层中的对象来实

现业务流,然后通过调用数据访问层将业务流中的相应数据进行持久化,通过数据访问层来初始化领域模型。置于直接在表现层中使用数据访问层的功能,我们通常是

不推荐这样做的,一般我们不会这么做的,我这里就不详细的阐述。

五、如何设计数据访问层

本节将详细的讲述如何设计出自己的数据访问层,满足上述的几个基本要求,那么可以说就算完成了基本的数据访问层的功能,其实如果我们从头开始开发一个

这样的数据访问层将是非常大的工作量,目前流行的很多的ORM框架已经提供了丰富的数据访问层的功能,能够非常好的满足上述的几项职责。当然本节还是会结合代

码来说说数据访问层的具体实现。

我们前面讲述了数据访问的3个基本的功能需求,数据库独立性,可配置性及持久化对象模式(对象模型与关系模型的转换),我们这里先看如何实现数据库的独立

性,

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号