<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    hbn 繼承關系映射_1

    Posted on 2007-12-26 11:41 G_G 閱讀(1110) 評論(0)  編輯  收藏 所屬分類: hibernate
    嘗試著繼承關系和xdoclet使用后,對數據庫面向對象的使用更近一步。
    這次例子從開始到結束,都沒有接觸面向結構的數據庫設計;
    并完全在代碼中以面向對象的形式來設計的。


    hbn 的繼承映射關系有這幾種;
    1. 繼承關系類共同使用一個表;
    2. 每個子類一個表(mapping全);
    3. 每個具體內一個表(mapping只有父類)。
    先說說3把,感覺這點最好用-》》
    繼承關系描述:
    ? Animals父類 -- Bird 、Reptiles;
    ? Animals.java
    package?TableBean;

    /** 動物父類
    ?*?@hibernate.class?
    ?*?table="animals"
    ?
    */
    public?class?Animals?{

    ????
    private?Integer?id?;
    ????
    private?Integer?size?;
    ????
    private?Integer?speed;
    ????
    /**
    ?????*?@hibernate.id
    ?????*?generator-class="increment"
    ?????
    */
    ????
    public?Integer?getId()?{
    ????????
    return?id;
    ????}

    ????
    public?void?setId(Integer?id)?{
    ????????
    this.id?=?id;
    ????}

    ????
    /** 動物體積大小
    ?????*?@hibernate.property
    ?????
    */
    ????
    public?Integer?getSize()?{
    ????????
    return?size;
    ????}

    ????
    public?void?setSize(Integer?size)?{
    ????????
    this.size?=?size;
    ????}
    ????
    /** 動物的移動速度
    ?????*?@hibernate.property
    ?????
    */
    ????
    public?Integer?getSpeed()?{
    ????????
    return?speed;
    ????}

    ????
    public?void?setSpeed(Integer?speed)?{
    ????????
    this.speed?=?speed;
    ????}
    ????
    }

    Bird.java
    package?TableBean;

    /** 在xdoeclt中聲明繼承表關系
    ?*?@hibernate.joined-subclass?
    ?*?@hibernate.joined-subclass-key?
    ?*??column="id"
    ?*?
    ?
    */
    public?class?Bird?extends?Animals?{
    ????
    private?String?wings?;
    ????
    private?Integer?leg?;
    ????
    /** 鳥類翅膀描述
    ?????*?@hibernate.property?
    ?????*?
    @return
    ?????
    */
    ????
    public?String?getWings()?{
    ????????
    return?wings;
    ????}

    ????
    public?void?setWings(String?wings)?{
    ????????
    this.wings?=?wings;
    ????}

    ????
    /**鳥腿描述
    ?????*?@hibernate.property?
    ?????*?
    @return
    ?????
    */
    ????
    public?Integer?getLeg()?{
    ????????
    return?leg;
    ????}

    ????
    public?void?setLeg(Integer?leg)?{
    ????????
    this.leg?=?leg;
    ????}
    ????
    }
    ?
    Reptiles.java
    package?TableBean;

    /** 在xdoeclt中聲明繼承表關系
    ?*?@hibernate.joined-subclass?
    ?*?@hibernate.joined-subclass-key?
    ?*??column="id"
    ?
    */
    public?class?Reptiles?extends?Animals?{
    ????
    private?Integer?leg?;
    ????
    /** 爬行動物腿個數
    ?????*?@hibernate.property?
    ?????*?
    @return
    ?????
    */
    ????
    public?Integer?getLeg()?{
    ????????
    return?leg;
    ????}

    ????
    public?void?setLeg(Integer?leg)?{
    ????????
    this.leg?=?leg;
    ????}
    ????
    }


    ant_xdoeclt.xml文件
    <?xml?version="1.0"?encoding="UTF-8"?>

    <!--?DO?NOT?EDIT?-->
    <!--?This?file?is?automatically?regenerated?for?each?new?XDoclet?generation.?-->
    <!--?Any?changes?you?make?to?this?file?will?be?overwritten.?If?you?want?-->
    <!--?to?edit?this?file,?make?a?copy?and?rename?it?for?your?own?use.?-->

    <project?name="Hbmzj?XDoclet?Generation"?default="_xdoclet_generation_"><property?file="xdoclet-build.properties"/>
    <property?name="xdoclet.basedir"?value="/C:/Program?Files/MyEclipse/eclipse/plugins/com.genuitec.jboss.ide.eclipse.xdoclet.core_4.0.0/"/>
    <path?id="xdoclet.classpath"><pathelement?location="E:/hibernate/Hbmzj/bin"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/rt.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/jsse.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/jce.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/charsets.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/ext/sunjce_provider.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/ext/sunpkcs11.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/ext/dnsns.jar"/>
    <pathelement?location="C:/Program?Files/Java/jdk1.5.0_02/jre/lib/ext/localedata.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/antlr-2.7.5H3.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/asm-attrs.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/asm.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/c3p0-0.8.5.2.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/cglib-2.1.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/cleanimports.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/commons-collections-2.1.1.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/commons-logging-1.0.4.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/concurrent-1.3.2.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/connector.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/dom4j-1.6.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/ehcache-1.1.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/hibernate3.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/jaas.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/jacc-1_0-fr.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/jaxen-1.1-beta-4.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/jdbc2_0-stdext.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/jgroups-2.2.7.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/jta.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/log4j-1.2.9.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/oscache-2.1.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/proxool-0.8.3.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/swarmcache-1.0rc2.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/xerces-2.6.2.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/xml-apis.jar"/>
    <pathelement?location="D:/eclipse2/eclipse/plugins/org.junit_3.8.1/junit.jar"/>
    <pathelement?location="E:/hibernate/Hbmzj/lib/MYSQL.JAR"/>

    <fileset?dir="${xdoclet.basedir}">
    <include?name="*.jar"/>
    <exclude?name="*xjavadoc*.jar"/>
    <include?name="jdk5/*.jar"/>
    </fileset>
    </path>
    <target?name="_xdoclet_generation_"?depends="N65540"/>
    <target?name="N65540"?description="Standard?Hibernate">
    <taskdef?name="hibernatedoclet"
    ???????? classname
    ="xdoclet.modules.hibernate.HibernateDocletTask"
    ???????? classpathref
    ="xdoclet.classpath"/>

    <
    hibernatedoclet?excludedTags="@version,@author,@todo,@see"?
    ?????????????? destDir
    ="src"?
    addedTags
    ="@xdoclet-generated?at?${TODAY},@copyright?The?XDoclet?Team,@author?XDoclet,@version?${version}"?>

    <fileset?dir="src"??includes="**/*.java"?>
    </fileset>

    <hibernate>
    </hibernate>
    </hibernatedoclet>
    </
    target>
    </
    project>

    ant運行 后得到 Animals.hbm.xml 文件
    使用 hbn工具 hbn2ddl 后
    mysql>?desc??Animals;
    +-------+---------+------+-----+---------+-------+
    |?Field?|?Type????|?Null?|?Key?|?Default?|?Extra?|
    +-------+---------+------+-----+---------+-------+
    |?id????|?int(11)?|??????|?PRI?|?0???????|???????|
    |?size??|?int(11)?|?YES??|?????|?NULL????|???????|
    |?speed?|?int(11)?|?YES??|?????|?NULL????|???????|
    +-------+---------+------+-----+---------+-------+
    3?rows?in?set?(0.00?sec)

    mysql
    >?desc?reptiles;
    +-------+---------+------+-----+---------+-------+
    |?Field?|?Type????|?Null?|?Key?|?Default?|?Extra?|
    +-------+---------+------+-----+---------+-------+
    |?id????|?int(11)?|??????|?PRI?|?0???????|???????|
    |?leg???|?int(11)?|?YES??|?????|?NULL????|???????|
    +-------+---------+------+-----+---------+-------+
    2?rows?in?set?(0.00?sec)

    mysql
    >?desc?bird;
    +-------+--------------+------+-----+---------+-------+
    |?Field?|?Type?????????|?Null?|?Key?|?Default?|?Extra?|
    +-------+--------------+------+-----+---------+-------+
    |?id????|?int(11)??????|??????|?PRI?|?0???????|???????|
    |?wings?|?varchar(255)?|?YES??|?????|?NULL????|???????|
    |?leg???|?int(11)??????|?YES??|?????|?NULL????|???????|
    +-------+--------------+------+-----+---------+-------+
    3?rows?in?set?(0.00?sec)


    添加測試數據:
    mysql>?select?*?from?bird;
    +----+-------+------+
    |?id?|?wings?|?leg??|
    +----+-------+------+
    |??1?|?2G????|????2?|
    +----+-------+------+
    1?row?in?set?(0.00?sec)

    mysql
    >?select?*?from?Animals;
    +----+------+-------+
    |?id?|?size?|?speed?|
    +----+------+-------+
    |??1?|????1?|?????9?|
    |??2?|????6?|?????2?|
    +----+------+-------+
    2?rows?in?set?(0.00?sec)

    mysql
    >?select?*?from?Reptiles;
    +----+------+
    |?id?|?leg??|
    +----+------+
    |??2?|????4?|
    +----+------+
    1?row?in?set?(0.00?sec)



    測試
    public?class?TestJc?extends?TestCase?{
    ????
    public?void?testJC()?throws?Exception?{
    ????????Session?session
    =?HbnFactory.currentSession();
    ????????Transaction?tr?
    =?session.beginTransaction();
    ??????? //1
    ????????Animals?aa?
    =?(Animals)session.load(Animals.class,1);
    ????????System.out.println(aa);
    ??????? //2
    ????????Bird?bb?
    =??(Bird)?session.load(Bird.class,1);
    ????????System.out.println(bb);
    ??????? //3
    ????????Object?obj?
    =?session.createQuery("?from?Animals?").list();
    ????????System.out.println(obj);
    ????????
    ????????tr.commit();
    ????????HbnFactory.closeSession();
    ????}
    }
    結果:
    //1
    Hibernate:?
    select?animals0_.id?as?id0_,?animals0_.size?as?size0_0_,?animals0_.speed?as?speed0_0_,?animals0_1_.wings?as?wings1_0_,?animals0_1_.leg?as?leg1_0_,?animals0_2_.leg?as?leg2_0_,?case?when?animals0_1_.id?is?not?null?then?1?when?animals0_2_.id?is?not?null?then?2?when?animals0_.id?is?not?null?then?0?end?as?clazz_0_?from?animals?animals0_?left?outer?join?Bird?animals0_1_?on?animals0_.id=animals0_1_.id?left?outer?join?Reptiles?animals0_2_?on?animals0_.id=animals0_2_.id?where?animals0_.id=?
    TableBean.Bird
    @5e176f
    //2
    TableBean.Bird
    @5e176f
    //3
    Hibernate:?
    select?animals0_.id?as?id,?animals0_.size?as?size0_,?animals0_.speed?as?speed0_,?animals0_1_.wings?as?wings1_,?animals0_1_.leg?as?leg1_,?animals0_2_.leg?as?leg2_,?case?when?animals0_1_.id?is?not?null?then?1?when?animals0_2_.id?is?not?null?then?2?when?animals0_.id?is?not?null?then?0?end?as?clazz_?from?animals?animals0_?left?outer?join?Bird?animals0_1_?on?animals0_.id=animals0_1_.id?left?outer?join?Reptiles?animals0_2_?on?animals0_.id=animals0_2_.id
    [TableBean.Bird@5e176f,?TableBean.Reptiles@2c1e6b,?TableBean.Reptiles@811c88]



    主站蜘蛛池模板: 亚洲人成网站日本片| 亚洲视频一区二区三区四区| 亚洲一区免费观看| 亚洲五月综合缴情婷婷| 国产91久久久久久久免费| 精品一区二区三区高清免费观看| 国产亚洲无线码一区二区| 曰批视频免费40分钟试看天天| 亚洲一区二区三区高清在线观看| 亚洲国产成人精品无码久久久久久综合 | 亚洲人成国产精品无码| 亚欧日韩毛片在线看免费网站| 亚洲乱码一二三四区乱码| 亚洲精品天堂成人片?V在线播放| 伊人久久免费视频| 老司机午夜在线视频免费观| 亚洲网站在线观看| 免费人成网站7777视频| 中文字幕天天躁日日躁狠狠躁免费| 亚洲区日韩精品中文字幕| 亚洲国产精品VA在线看黑人| 成人性生活免费视频| 免费萌白酱国产一区二区三区| 亚洲乱码av中文一区二区| 亚洲国产第一站精品蜜芽| 日韩电影免费在线| 99久久综合精品免费| 成年网在线观看免费观看网址| 亚洲国产成人久久| 久久91亚洲人成电影网站| 国产成人aaa在线视频免费观看| 小草在线看片免费人成视久网| 美女视频黄视大全视频免费的| 亚洲va精品中文字幕| 亚洲熟妇无码AV在线播放 | 精品亚洲一区二区| 亚洲人成国产精品无码| 日本特黄特黄刺激大片免费| 99久久精品免费视频| 三级毛片在线免费观看| 深夜a级毛片免费视频|