blogjava's web log

          blogjava's web log
          ...

          hibernate繼承---聯合子類 已更新(六)

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

          先看先看由滿江紅翻譯團隊(RedSaga Translate Team)翻譯的聯合子類說明..

          <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: 子類的全限定名。

          (2)

          table: 子類的表名

          (3)

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

          (4)

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

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

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


          好了。。看 一個例子
          看這個配置文件

          <? 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 >

          表結構:

          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 )
          )


          寫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
          測試。。。
          //插入
          ????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){
          ????????????????}

          ????????}


          ????}

          ????
          //查詢
          ????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 閱讀(591) 評論(0)  編輯  收藏 所屬分類: java

          導航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動態語言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評論

          主站蜘蛛池模板: 万宁市| 古蔺县| 东台市| 永嘉县| 黔江区| 石楼县| 桦川县| 康平县| 许昌县| 濉溪县| 定南县| 吉安县| 黑龙江省| 永川市| 郁南县| 荥阳市| 宕昌县| 莱阳市| 灵丘县| 通城县| 元氏县| 余庆县| 武川县| 天门市| 玉龙| 广德县| 潮州市| 伽师县| 杭州市| 阳信县| 象州县| 疏附县| 都安| 哈尔滨市| 滨海县| 海伦市| 宜兰市| 日喀则市| 峨眉山市| 扶绥县| 建德市|