对象-关系行为模式

工作单元

维护受影响的对象列表,并协调对象的修改以及解决并发问题

interface WorkUnit {
    new(Object),Dirty(Object),Clean(Object)
}

工作单元会将被修改的对象变化记录下来,存储到数据库

工作单元解决的基本问题是记录各种操作过的对象

  • 调用者注册:修改之后调用者手动提交来保存对象
  • 对象注册:将注册方法置于对象中
  • 工作单元控制器:查询时返回一个拷贝对象,提交时比较拷贝对象与原有的对象,进行有选择的更新

工作单元可以保证更新顺序,并且按照相同的数据更新表可以很少地减少死锁

标识映射

通过给每个对象指定一个标识,避免重复加载,当需要对象时,通过映射来找到对象

无论需要一个什么对象,先检查标识映射,看需要的对象是否在其中

  • 键的选择:数据库主键
  • 显式的标识映射可以利用编译时检查的优点
  • 标识映射与会话相绑定

使用

  • 管理对象
  • 做缓存

延迟加载

一个不包含所需要的所有数据但知道如何获取这些数据的对象

  • 延迟初始化:每次获取都判断是否为空,如果空就去获取数据
  • 虚代理:一个获取数据的代理对象,类可以把它当做真实的对象
  • 值保持器:包装某个对象的对象,但是缺点是不如虚代理,类必须知道这个保持器的存在
  • 重影:首次加载只加载ID,当需要某个域时,则会加载入全部的域

使用的最佳时机:需要额外的调用,并且当主对象被使用时,额外加载的数据没被使用的时候

results matching " "

No results matching " "

results matching " "

No results matching " "