企业应用架构模式学习(十一):对象-关系行为模式

工作单元(unit of work)

维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决。

企业应用架构模式学习(十一):对象-关系行为模式_第1张图片

      从数据库中存取数据时,记录所修改的内容是非常重要的,否则,哪些改变的数据将不会被写回到数据库中,同样,必须插入创建的新对象和移除已删除的对象。

       如果每次修改对象都对数据库进行操作,那是不靠谱的。

       工作单元记录在业务事务过程中对数据库有影响的所有变化,操作结束后,作为一种结果,工作单元了解所有需要对数据库做的改变。

运行机制

        工作单元记录整个修改过程,关键在提交的时候,它打开一个事务,做所有的并发检查并向数据库写入所做的修改。

  • 调用者注册,用户改变了对象就必须将它注册到工作单元。

企业应用架构模式学习(十一):对象-关系行为模式_第2张图片

  • 对象注册,把注册方法置于对象方法中,

企业应用架构模式学习(十一):对象-关系行为模式_第3张图片

  • 工作单元控制器,工作单元控制所有的数据库读操作,读取之后,拷贝一个对象,提交时进行比较

企业应用架构模式学习(十一):对象-关系行为模式_第4张图片

使用时机

工作单元解决的基本问题是记录操作过的各种对象,以便知道为了使内存中的数据与数据库同步时需要考虑哪些对象。除工作单元以外,还可以采用显式的调用方式,目前我们都这样干的。

标识映射

通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找他们

企业应用架构模式学习(十一):对象-关系行为模式_第5张图片

标识映射记录在一个业务事务中从数据库读出的所有对象,无论什么时候要用一个对象,先检查标识映射,看是否已经存在其中。

目前使用最多的就是缓存机制,加载之后放于map中,下次先找map,没有再去数据库查找。

延迟加载

一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。

企业应用架构模式学习(十一):对象-关系行为模式_第6张图片

延迟加载主要用于,加载对象时有许多关联对象,这些对象在不需要时是不需要加载的。

运行机制

有四种实现延迟加载的方法

  • 延迟初始化(lazy initialization),每次访问属性域都要检查该域是否为空,用null来标记一个没有加载的域。适用于活动记录、表数据入口和行数据入口。
  • 虚代理(virtual proxy),它看起来是一个对象,但实际上不包含任何东西,当它有一个方法被调用时,它才用数据库加载恰当的对象。
  • 值保持器(value holder),用来包装某个其他对象的对象。只有在第一次访问值保持器时它才从数据库读。
  • 重影(ghost) 是部分状态下的真是对象,当从数据库加载对象的时候,它只包含id,要访问其他域的时候,才加载完全。.

使用时机

取决于读取一个对象时需要加载多少数据和数据库调用次数

 

对象--关系行为模式是对象与数据库之间进行交互的选择,什么时候交互,一次交互多少,如何交互的问题。

你可能感兴趣的:(企业应用架构模式学习(十一):对象-关系行为模式)