数据库对象映射中的架构模式.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库对象映射中的架构 数据库对象映射中的架构 模式 模式 王志斌 王志斌 逻辑层访问数据库对设计深远而且难以重构. 1.把sql 访问从逻辑中分离出来,并把它放到独立的类中. 例如: Class user Class Company 2.有一种方法能很好的组织这些类,让他们以数据库中的表结构为 基础,这样每一个数据库表对应一个类. 例如: Class user Table user Class company Table user 3.应用程序的其他部分根本不需要了解任何与sql相关的事情,而且 很容易就能访问数据库. 例如:getName(); getCompany(); 先说一下表模块和领域模型两个概念. 表模块:相当与一个集合,记录集合. 记录集合对数据库中的每个表仅需要 一个 对象来管理. 例如: getByid() getByName() getAll() 领域模型:他们每个都向前传递一个行为 给另一个对象,直到结果对象. 随着领域的增大: 数据到对象的转换会越来越复杂. 更好的办法是: 把数据库操作和领域完全的独立 出来. 建立数据映射器: 例如 映射和持久化 1,使用外键映射一个单值 2,使用外键映射一个多值 3,使用关联映射一个多对多关联.(排序 问题) 1,让每个数据库表做为一个领域类. 2,让表的每一行对应一个领域对象. 3,让每个对象负责数据库的存储过 程.(并具有一部分逻辑) 并发情况 更新丢失 $U = user::getByid() | | $U1 = user::getByid() …. | | …. | | $U-update() | | $U-update() | | 不一致读 | | $U1 = user::getByid() | | $U = user::getByid() | | …. | | $U1-update() | | $U-update() | | 一,延迟加载(映射) 二,级连对象(映射) 三,工作单元(持久化) 四,乐观离线锁(并发) 五,版本控制 延迟加载 代码: class user extend entity { public $table = array( name, ctime, version); public function __get($key) //继承自entity { if(empty($key)) {

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档