摘要: 一个对象,它虽然不包含所需要的所有数据,但是它知道怎么获取这些数据设计专门的对象来把数据从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) 编辑