Oracle神諭

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            284 隨筆 :: 9 文章 :: 106 評論 :: 0 Trackbacks
            看到jBPM中大量使用了subclass的用法,應該說這個是比較OO的,設計的非常合理。
            (一)、首先先去看看Hibernate的subclass:
            1.對于“每一個類繼承樹對應一個表”的策略來說,就需要使用<subclass>定義。
            <subclass>
                      name="className"  //子類的全名
                      discriminator-value="discriminator-value" //辨別標識,一個用于區分每個獨立的子類的值
                      proxy="proxyInterface" //指定一個類或接口,在延遲加載時作為代理使用
                      lazy="true|false"
                      dynamic-update="true|false"
                      dynamic-insert="true|false"
                      entity-name="entityName"
                      node="element-name">
                     <property ..../>
                    ......
                  </subclass>
            2.每個子類都應該定義它自己的持久化屬性和子類。<version>和<id>屬性可以從根父類繼承下去。在一棵繼承樹上的每個子類都必須定義一個唯一的discriminator-value。如果沒有指定,就會使用Java類的全限定名。
            3.必須在子類的影射中指定extends屬性來指定已影射的超類。

           (二)在jBPM中的使用
           1.在jBPM的definition組的類機構中就采用上述的技術。其中ModuleDefinition是作為抽象父類存在的,而ContextDefinition、FileDefinition、LoggingDefinition、SchedulerDefinition、MgmtDefinition類是做為subclass存在的。
           2.在父類中使用了discriminator鑒別器的技術:在繼承策略中的“一個對象繼承樹應對應一個表”的策略中,<discriminator>元素是必須的。鑒別器字段包含標志值,用于告知持久層應該為某個特定的行創建哪一個類別的實例。例如:
            父類的影射片段:
              <discriminator type="char" column="CLASS_"/>
              <!-- M : org.jbpm.module.def.ModuleDefinition -->
              <!-- C : org.jbpm.context.def.ContextDefinition -->
              <!-- F : org.jbpm.file.def.FileDefinition -->
              <!-- L : org.jbpm.logging.def.LoggingDefinition -->
              <!-- I : org.jbpm.scheduler.def.SchedulerDefinition -->
              <!-- T : org.jbpm.taskmgmt.def.TaskMgmtDefinition -->
              <!--  :  -->
              <!--  :  -->
           3.鑒別器字段的實際值是根據<class>和<subclass>元素中的discriminator-value屬性得來的
           例如:
            父影射文件:
            <class name="org.jbpm.module.def.ModuleDefinition"
                   table="JBPM_MODULEDEFINITION"
                   abstract="true"
                   discriminator-value="M"
                   lazy="false">
                 子影射文件:
            <subclass name="org.jbpm.context.def.ContextDefinition"
                      extends="org.jbpm.module.def.ModuleDefinition"
                      discriminator-value="C"
                      lazy="false">
                 </subclass>
          posted on 2005-10-03 10:22 java世界暢談 閱讀(4592) 評論(2)  編輯  收藏 所屬分類: JBPM

          評論

          # re: Hibernate的subclass用法 2005-12-06 17:29 p
          不錯
            回復  更多評論
            

          # re: Hibernate的subclass用法 2007-04-28 14:28 necropolis
          講的很清楚,簡明扼要  回復  更多評論
            

          主站蜘蛛池模板: 凌源市| 五莲县| 重庆市| 黑龙江省| 鹤岗市| 石棉县| 尼玛县| 墨江| 贵定县| 安塞县| 锦屏县| 杨浦区| 香格里拉县| 偃师市| 曲周县| 台山市| 平顶山市| 正蓝旗| 茶陵县| 高雄市| 和顺县| 安化县| 墨竹工卡县| 漳浦县| 安宁市| 横山县| 襄垣县| 上高县| 南岸区| 元阳县| 台中市| 积石山| 天祝| 景泰县| 丰原市| 四川省| 鹰潭市| 平和县| 石泉县| 项城市| 历史|