blogjava's web log

          blogjava's web log
          ...

          hibernate繼承---聯(lián)合子類(lèi) 已更新(六)

          這篇和上一篇http://www.aygfsteel.com/wujun/archive/2006/04/11/40527.html
          不同的地方在于配置文件上。
          上一篇采用的是joined-subclass?

          先看先看由滿(mǎn)江紅翻譯團(tuán)隊(duì)(RedSaga Translate Team)翻譯的聯(lián)合子類(lèi)說(shuō)明..

          <union-subclass
                  name="ClassName"                    (1)
                  table="tablename"                   (2)
                  proxy="ProxyInterface"              (3)
                  lazy="true|false"                   (4)
                  dynamic-update="true|false"
                  dynamic-insert="true|false"
                  schema="schema"
                  catalog="catalog"
                  extends="SuperclassName"
                  abstract="true|false"
                  persister="ClassName"
                  subselect="SQL expression"
                  entity-name="EntityName"
                  node="element-name">
          
                  <property .... />
                  .....
          </union-subclass>
          (1)

          name: 子類(lèi)的全限定名。

          (2)

          table: 子類(lèi)的表名

          (3)

          proxy (可選): 指定一個(gè)類(lèi)或者接口,在延遲裝載時(shí)作為代理使用。

          (4)

          lazy (可選, 默認(rèn)是 true): 設(shè)置為 lazy="false" 禁止使用延遲裝載。

          這種映射策略不需要指定辨別標(biāo)志(discriminator)字段。

          更多關(guān)于繼承映射的信息,參考第?10?章 繼承映射(Inheritance Mappings)


          好了。。看 一個(gè)例子
          看這個(gè)配置文件

          <? xml?version="1.0" ?>
          <! DOCTYPE?hibernate-mapping
          ????PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD//EN"
          ????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
          >

          < hibernate-mapping >

          ????
          < class? name ="com.test.Dog" ?table ="dog" > ??

          ????????
          < id? name ="aid" ?type ="string" ?unsaved-value ="null" ? >
          ????????????
          < column? name ="aid" ?sql-type ="char(32)" ?not-null ="true" />
          ????????????
          < generator? class ="uuid.hex" />
          ????????
          </ id >

          ????????
          < property? name ="dname" >
          ????????????
          < column? name ="dname" ?sql-type ="varchar(16)" />
          ????????
          </ property >

          ????
          </ class >

          ????
          < class? name ="com.test.Cat" ?table ="cat" > ??

          ????????
          < id? name ="aid" ?type ="string" ?unsaved-value ="null" ? >
          ????????????
          < column? name ="aid" ?sql-type ="char(32)" ?not-null ="true" />
          ????????????
          < generator? class ="uuid.hex" />
          ????????
          </ id >

          ????????
          < property? name ="cname" >
          ????????????
          < column? name ="cname" ?sql-type ="varchar(16)" />
          ????????
          </ property >

          ????
          </ class >

          </ hibernate-mapping >

          表結(jié)構(gòu):

          create ? table ?dog
          (aid?
          varchar ( 32 )? not ? null ? primary ? key ,
          ?dname?
          varchar ( 16 )
          )

          create ? table ?cat
          (aid?
          varchar ( 32 )? not ? null ? primary ? key ,
          ?cname?
          varchar ( 16 )
          )


          寫(xiě)VO
          Amimal.java

          package ?com.test;

          public ? class ?Animal
          {
          ????
          private ?String?aid;
          ???
          // get?set

          Dog.java

          package ?com.test;

          public ? class ?Dog? extends ?Animal
          {
          ????
          private ?String?dname;
          ??
          // get?set
          Cat.java
          package?com.test;

          public?class?Cat?extends?Animal
          {
          ????
          private?String?cname;
          ??
          //get?set
          測(cè)試。。。
          //插入
          ????public?void?doCreate()
          ????
          {
          ????????
          try
          ????????
          {
          ????????????session?
          =?sf.openSession();

          ????????????Dog?dog?
          =?new?Dog();
          ????????????dog.setDname(
          "small?dog");
          ????????????Cat?cat?
          =?new?Cat();
          ????????????cat.setCname(
          "small?cat");
          ????????????session.save(dog);
          ????????????session.save(cat);
          ????????????session.flush();
          ????????????session.connection().commit();

          ????????}

          ????????
          catch(HibernateException?ex)
          ????????
          {
          ????????????ex.printStackTrace();
          ????????}

          ????????
          catch(SQLException?ex1)
          ????????
          {
          ????????????ex1.printStackTrace();
          ????????}

          ????????
          finally
          ????????
          {
          ????????????????
          try{
          ????????????????????session.close();
          ????????????????}

          ????????????????
          catch(HibernateException?ex2){
          ????????????????}

          ????????}


          ????}

          ????
          //查詢(xún)
          ????public?void?doQuery()
          ????
          {
          ????????
          try{
          ????????????session?
          =?sf.openSession();
          ????????????Query?q?
          =?session.createQuery("select?d?from?Dog?as?d");
          ????????????List?l?
          =?q.list();
          ????????????Dog?dog?
          =?null;
          ????????????Cat?cat?
          =?null;
          ????????????
          for(int?i=0;i<l.size();i++)
          ????????????
          {
          ????????????????dog?
          =?(Dog)l.get(i);
          ????????????????System.out.println(dog.getDname());
          ????????????}

          ????????}

          ????????
          catch(HibernateException?ex){
          ????????????ex.printStackTrace();
          ????????}

          ????????
          finally{
          ????????????
          try{
          ????????????????session.close();
          ????????????}

          ????????????
          catch(HibernateException?ex2){
          ????????????}

          ????????}

          ????}

          posted on 2006-04-14 21:50 record java and net 閱讀(593) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java

          導(dǎo)航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動(dòng)態(tài)語(yǔ)言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 天柱县| 南宁市| 金沙县| 廉江市| 忻城县| 安达市| 青州市| 泽州县| 阿鲁科尔沁旗| 泗水县| 富源县| 张家川| 阿勒泰市| 启东市| 开化县| 闸北区| 沙湾县| 新和县| 泽库县| 黔西| 凤山县| 十堰市| 富源县| 陆河县| 方山县| 安多县| 星子县| 甘泉县| 杭锦后旗| 乌鲁木齐县| 湖北省| 澄江县| 镶黄旗| 德保县| 佛坪县| 保亭| 新宁县| 常德市| 炉霍县| 华池县| 伊宁县|