alxe1528

          BlogJava 聯(lián)系 聚合 管理
            3 Posts :: 11 Stories :: 2 Comments :: 0 Trackbacks

          實體類關(guān)系如圖所示:

          映射到數(shù)據(jù)庫中:

          1.單獨一張表(鑒別器)。如圖

           

          配置文件寫法:

              <class name="Employee" table="employee"discriminator-value="0">
                  <id column="id" name="id">
                      <generator class="native" />
                  </id>
                  <discriminator column="type" type="int" />
                  <property name="name" />
                  <subclass name="Skiller" discriminator-value="1">
                      <property name="skill" />
                  </subclass>
                  <subclass name="Sales" discriminator-value="2">
                      <property name="sell" />
                  </subclass>
              </class>

          說明:discriminator 鑒別器,默認type是string。

                    subclass :子類

          總結(jié):這種形式查詢速度快,但數(shù)據(jù)庫表結(jié)構(gòu)不合理,表中有很多空的字段值。特別是子類特有的屬性很多的時候。

          2.父類和子類各映射一張表(內(nèi)連接),如圖。

           

          配置文件寫法:

              <class name="Employee" table="employee">
                  <id column="id" name="id">
                      <generator class="native" />
                  </id>
                  <property  name="name" />
                  <joined-subclass name="Skiller" table="skiller">
                      <key column="emp_id"/>
                      <property name="skill"/>
                  </joined-subclass>
                  <joined-subclass name="Sales" table="sales">
                      <key column="emp_id"/>
                      <property name="sell"/>
                  </joined-subclass>
              </class>

          總結(jié):這種形式數(shù)據(jù)庫表結(jié)構(gòu)合理,但增刪改查的速度都較慢,性能不好。

          注意:查詢是最好注明子類類名(get(Sales.class , id) ),不要用多態(tài)查詢( get(Employee.class , id) ),不然性能會很差

          3.鑒別器與內(nèi)連接結(jié)合。

          配置文件寫法:
          <class name="Employee" table="employee"discriminator-value="0">
                  <id column="id" name="id">
                      <generator class="native" />
                  </id>
                  <discriminator column="type" type="int" />
                  <property name="name" />
                  <subclass name="Skiller" discriminator-value="1">
                      <property name="skill" />
                  </subclass>
                  <subclass name="Sales" discriminator-value="2">
                      <join table="sales">
                          <key column="emp_id"/>
                          <property name="sell" />
                      </join>            
                  </subclass>
              </class>
          總結(jié):這種形式一般是在Sales類特有的屬性很多,Skiller特有屬性少的時候用。

          4.每個具體類映射一張獨立表。


           配置文件寫法:

          <!-- 父類:Employee,采用每個具體類一張表的方式(抽象類不對應(yīng)表) -->
              <class name="Employee" table="employee">
                  <id column="id" name="id">
                  <!-- 這時不能使用identity生成策略,因為要求整個繼承結(jié)構(gòu)中所有的數(shù)據(jù)記錄的id不能重復(fù)。
                              因為下面是union-subclass  -->
                      <generator class="hilo" />
                  </id>
                  <property name="name" />
                  <union-subclass name="Skiller" table="skiller">
                      <property name="skill" />
                  </union-subclass>
                  <union-subclass name="Sales" table="sales">
                      <property name="sell"/>
                  </union-subclass>
              </class>

          若父類為抽象類,則將父類Class配置(第一句)寫成:

          <class name="Employee" table="employee" abstract="true">

          總結(jié):這種形式 增刪改 的速度都很好,但 查詢 時較慢。

          posted on 2011-12-27 22:09 鄭健成 閱讀(81) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 台中县| 鄂托克前旗| 锡林郭勒盟| 思茅市| 玉溪市| 沈阳市| 彩票| 安丘市| 大关县| 辽中县| 望奎县| 沂源县| 日照市| 冷水江市| 镇康县| 北海市| 秭归县| 黄山市| 河津市| 饶阳县| 台江县| 博白县| 大同市| 九龙坡区| 湖南省| 尚志市| 金塔县| 延寿县| 茂名市| 太仆寺旗| 邵阳市| 榕江县| 邳州市| 汉源县| 镇雄县| 天津市| 手机| 泊头市| 年辖:市辖区| 景德镇市| 田东县|