上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: 把关联保存为一个表,存储关联表的外键在对象中,使用集合作为域值,来处理多值域.而在DB中,只能有单值域.外键映射的核心,是在关联关系的单值端使用外键来维持联系.而在多对多的关联关系中,已经不存在单值端了.运行机制使用一个链接表来保存关联关系.仅有两个字段,即两个关联表的外键ID.对于每一对相关联的对象,它会有一个数据行与之对应.链接表没有对应的内存对象.所以也就没有ID.其主键是两个关联表的主键的组合.从链接表中加载Data需要两次查询,例如为雇员加载机能的问题1,查询EmployeesSkills表,得出该雇员关联的所有行.2,根据这些关联行的ID,查找出所有的机能对象.当内存中已存在这些信 阅读全文
posted @ 2014-01-17 11:00 robynhan 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 把对象间的关系映射到DB表键的外键引用对象之间可以通过对象引用来互相直接访问.运行机制关键是标识域.一对一的关联.使用一个DB的外键取代.一对多的对象集合.不能在DB中把相连的对象集合都保存了.必须颠倒引用的方向一张唱片有多个曲目,那么在曲目表中保存唱片的外键.更新时较为麻烦插入和删除在多的一方(曲目)是依赖映射时(只能被唱片所拥有,而不能被其它处引用).容易实现.删除与唱片相连的所有曲目,再把唱片中所有当前曲目记录插入进来.加入一个向后指针为了让关联双向化.在曲目上加入一个指向唱片的链接.改变了对象模型,可以以处理单值域的技术来处理更新.进行一次区分通过数据库的当前状态区分.从DB中重读(曲 阅读全文
posted @ 2014-01-17 10:20 robynhan 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 在对象中保存DB的ID字段,以维持内存对象和DB数据Row之间的identify.关系DB使用key来区分数据行.而内存对象不需要这样的键.因为对象系统能够保证身份确认.读取时没有问题,但是为了正确地写回DB.需要联系两者.本质上,只是将DB表的主键存储在对象的field上.工作机制键的选择meaningful key.应保证唯一性和恒定性.而这种检查是滞后的(Data已经进入DB后才可行).所以它是不可信的.meaningless key.由Db构造的,无用的随机数.简单/组合键Simple键.只使用一个DB字段.优点是完全一致性(所有的键操作都可以使用相同的代码).compound键.使用 阅读全文
posted @ 2014-01-16 11:28 robynhan 阅读(708) 评论(0) 推荐(0) 编辑
摘要: 一个对象,它虽然不包含所需要的所有数据,但是它知道怎么获取这些数据设计专门的对象来把数据从DB中加载到内存中.该对象可以完成在加载所需对象的同时,把与之相关的对象也一并加载了.否则,必须显示加载所有所需的对象.但是,加载一个对象可能会引起大量相关对象的加载.当真正需要的对象只有几个时,会损害系统的性能.延迟加载会暂时中止该关联加载过程.以使需要的数据在用到时才被加载.运行机制延迟初始化 Lazy initialization思想.每次访问属性Field时,先检查是否为空..必须保证field是自封闭的.也就是所有对该field的访问(即使来自类内部),都要通过get方法实现.使用null来标记 阅读全文
posted @ 2014-01-15 17:17 robynhan 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 通过在Map中保存每个已加载过的对象,确保每个对象只加载一次.当要访问对象时,首先检查标识映射,看需要的对象是否已经存在其中.使用Identify来确保不重复加载相同的数据,不仅有助于保证正确性(不会将同一数据加载到两个不同的对象上),还能提升性能.运行机制基本思想:使用一系列映射.这些映射包含了从DB读出的对象.键选择当DB的键只有一列,且不可改变时,最自然的就是DB的主键.通常,一个以简单数据类型的代理主键,可以作为映射的键.显示还是通用.显式的.为每一种需要的对象提供不同的方法.findPerson(1).推荐.强类型有利于编译时检查.显示的接口.但是每增加一个映射就要加入一个方法.通用 阅读全文
posted @ 2014-01-15 14:40 robynhan 阅读(1038) 评论(0) 推荐(0) 编辑
摘要: 维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决.从DB中存取Data时,必须记录增删改动作,以将对DB有影响的数据写会到DB中去.如果在每次修改对象模型时就对DB进行相应的修改,会造成大量小规模的DB调用,降低了速度.工作单元记录业务事务中对DB有影响的所有变化.然后在操作结束后,了解所有需要对DB做的改变.运行机制如何知道应该记录那些对象.可以由调用者实现,或者让发生变化的对象通知工作单元.caller registration用户改变了某个对象后,必须将它注册到工作单元.没有注册的对象在提交时都不会写入DB.允许在内存中改变对象而又不将它写入DB.但是,要达到这样的目的,最 阅读全文
posted @ 2014-01-15 11:16 robynhan 阅读(691) 评论(0) 推荐(0) 编辑
摘要: Table Data Gateway充当数据库表访问入口的对象.一个实例处理一个表中所有的行.在应用逻辑中混杂SQL语句会引起问题.表数据入口包含了用于访问单个表或者视图的所有SQL.其他代码调用它的方法来实现所有与数据库的交互.运行机制其用于数据读写,因此是无状态的.每个方法都将输入参数映射为SQL调用并在数据库连接上执行该语句.从查询返回信息返回简单数据结构,如Map.缺点是破坏了编译时检查.采用额外的数据传输对象.使用时机表数据入口同表模块可以很好地使用.它产生一个记录集数据结构,然后由表模块处理.它特别适合于事务脚本.一般不和领域模型一起使用.表数据入口能够很好滴运行在任何平台上,因为 阅读全文
posted @ 2014-01-14 17:08 robynhan 阅读(572) 评论(0) 推荐(0) 编辑
摘要: Transaction Script使用过程来组织业务逻辑,每个过程处理来自表现层的单个请求.运行机制尽可能将其放置于与表现层和数据源层隔离的类中.为了便于修改和测试,不能调用任何表现层逻辑.组织成类一个类,围绕一个主题将相关事务脚本组织在一起.Command模式.一个事务脚本对应一个类.优点:允许在运行时以对象的方式来操控脚本类的实例;便于解决线程相关问题.使用时机.胜在简单.当业务逻辑复杂时,很难保持良好的设计.会出现事务之间的冗余代码的问题.Domain Model合并了行为+数据的领域的对象模式.创建了一张由互联对象组成的网.运行机制创建一个完整的由对象组成的层,来对目标业务领域建模. 阅读全文
posted @ 2014-01-14 14:58 robynhan 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 地铁十字转门状态迁移表格.起始状态 触发迁移的事件 终止状态 要执行的动作.Locked Coin UnLocked UnLockUnLocked Pass LockedLock最直接的方式:switch(state) case Locked : switch(event) case Pass:State模式State/Strategy模式都有一个Context,其委托给一个具有几个派生类的多态基类.不同:State模式中的派生类持有回指向Context的引用.派生类的主要功能时使用这个引用来调用Context中的方法.所有State模式实例都是Strategy模式实例.反之不成立.State 阅读全文
posted @ 2013-12-14 15:49 robynhan 阅读(265) 评论(0) 推荐(0) 编辑
摘要: Modem结构Visitor模式对于被访问(Modem)层次结构中的每一个派生类,访问者(Visitor)层次中都有一个对应的方法.从派生类到方法的90度旋转.新增类似的Windows配置函数时,Visitor模式使用Visitor派生类来代替了被访问者结构中的方法.双重分发:accept()+visit()两个动态分发.形成了一个功能矩阵:不同类型的Modem的轴线+不同OS的轴线.每一个单一都被一个功能(描绘了特定的Modem在特定的OS中使用的)填充.Acyclic Visitor模式Visitor模式的问题Modem依赖于ModemVisitor.依赖环:Modem中每一个派生类在Vi 阅读全文
posted @ 2013-12-14 14:38 robynhan 阅读(481) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 下一页