• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 學習Ambler的Persistence Layer文檔的筆記

    發表于:2007-05-25來源:作者:點擊數: 標簽:PersistenceLayer學習ambler
    學習Ambler的Persistence Layer文檔的筆記 1. 持久化層必須滿足的 需求 除了關系型 數據庫 ,還應該支持文件格式、 面向對象 數據庫等等存儲格式 在持久化層中完全封裝數據庫操作,例如save、delete等等 可以同時返回過個數據對象,而不是每次只能夠返回一個

    學習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

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>