持久对象的管理模式
持久对象的管理是应用程序设计的重要问题,解决好这个问题需要好的设计模式集合,如PEAA。
持久对象的管理模式主要有:
- 标识映射:给内存中的所有持久对象都指定OID,再将这些OID映射到对象的内存地址上,然后将对象的其他标识属性映射到它们的OID上,以保证唯一性,如此程序中的其他对象就可以通过OID访问它们。
- 数据映射:程序随时都知道所需要的对象是在内存中还是数据库中获得。如果在内存中,数据映射能够确定数据是不是清洁的,即它在内存中的状态与数据库表中的记录是否同步。一旦数据是脏的,数据映射将从数据库重新获取数据。判断数据是否脏的信息可以保存在数据映射中,但将这个信息保存在标识映射中或实体对象本身更好。
- 延迟装载:一个对象,它并未包含所需要的所有数据,但它知道如何获取这些数据。由于数据库中的数据都是关联的,但是应用程序可以只装载一部分对象到内存里,就需要此模式的支持。对程序来说十分重要的是能够随时装载更多的与内存中对象相关的数据。
- 工作单元:程序知道一个业务事务都包含了内存中存在的哪些对象,因此应该在将这些对象的改变提交到数据库的同时处理这个程序。这个模式使应用程序了解业务事务,负责维护受业务事务影响的对象列表,并且能够协调改变的写入和解决并发问题。
在典型的情况下,用户通过表示对象向一个实体对象发出请求。 在PCBMER框架中,这个请求将被送到控制对象,控制对象再通过数据映射对象获得实体对象。 数据映射类一般位于中介者子系统中。
根据控制对象提供给数据映射对象的信息不同可以实现不同的检索策略。 当控制对象知道一个对象的