学习Ambler的Persistence Layer文档的笔记

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 daemonking 的 blog

学习ambler的persistence layer文档的笔记

1. 持久化层必须满足的需求
  除了关系型数据库,还应该支持文件格式、面向对象数据库等等存储格式
  在持久化层中完全封装数据库操作,例如save、delete等等
  可以同时返回过个数据对象,而不是每次只能够返回一个
  支持事务
  对象标识,类似table中的pk
  游标cursor,不能够一次返回某个对象的成百上千实例,那么就需要cursor来完成这个任务,完成与后台数据库的操作
  在某些情况下,不需要对象的完全信息数据(员工列表只需要员工的姓名,不需要其它的信息),这需要代理对象来完成对真实数据对象的封装(员工的代理类,只有id和姓名)
  对于报表,需要的大量的数据记录record而不是一个个的数据对象dataobject,所以需要record
  满足系统架构变动
  满足数据库的版本变动
  多连接
  出于性能的考虑,可能需要在某些特殊情况下输入sql来完成db的操作,那么持久化层要满足允许输入sql

2. 持久化层实现手法
  三种
    一个类一个table对应,一个继承树使用一套pk来作为各个table的pk,各自类对应的table中只包含自己的attribute
    对于每一个concrete类对应一个table,每个类有自己的一套pk,每个类的attribute包含其父类的attribute
    对于所有的类使用一个table,所有类,无论子类还是父类,属性都放在一张表中

3. 类之间的关联关系
  使用fk来解决掉
  如果出现多对多的关系,就使用一个中间表来记录两个实际类的多对多关系

4. 持久化层所涉及到的类
  classmap,类的集合,封装了行为,需要被映射到table中的类的集合
  cursor,封装了cursor的概念
  persistencebroker,维护到持久化层的连接,处理持久化层和其他层次的通信
  persistentcriteria,是一个类层次,这个类层次封装了一些行为,这些行为总体上来说是对db中数据的筛选,但是不是通过persistentobject的那种oid进行筛选,而是通过了object的一组属性集合进行筛选
  persistencemechanism,访问db的机制问题,对应于flatfile,relation db和oo db可能是不同的机制
  persistentobject,封装了能够对应到领域模型种类
  persistenttransaction,封装了事务
  sqlstatement,支持sql query

5. 实现上还是不清楚的,有几个例子可以看看
  delphi,depo,好像是巴西人做的一个比较好完成ambler的文档所介绍的orm的作品
  另外是hibernate,java的对象持久化,还没有看过,好像是插件方式的,不知道,要看看哦!!!!
  .net上面的么?不知道,

6. 总体的感觉,就是通过了xml文件配置,对assembly进行了反射,然后呢?不知道,难道就是使用么?
  
7. 今天同时看到的新闻,ms的申请orm的专利,faint

本文关键:学习Ambler的Persistence Layer文档的笔记
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top