- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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))
{
您可能关注的文档
最近下载
- 特种作业与特种设备作业人员培训课件.pptx VIP
- 22G101 三维彩色立体图集.docx VIP
- DK-金检机说明书(20110823HJ)-2.doc VIP
- SHT 3178-2015- 加油站用埋地钢-玻璃纤维增强塑料双层油罐工程技术规范.pdf VIP
- 特种设备典型事故案例.ppt VIP
- 2025-2026学年鲁科版(五四学制)(三起)(2024)英语四年级上册教学计划及进度表.pdf VIP
- 机器人行业深度报告:行星滚柱丝杠——高精技术集成之作,人形机器人线性关节 -2024-.pdf VIP
- JEDEC JESD47L(中英文对照版).pdf VIP
- 9 天上有颗南仁东星 课件(共28张PPT) 2025-2026统编版八年级语文上册.pptx VIP
- 科普版英语五年级上册单词默写表.docx VIP
文档评论(0)