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

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

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

    Table per concrete class方式:

    TItem有兩個子類:TBook、TDVD。按照Table per concrete class方式,每個字類對應一張數據庫表。對應于TBook和TDVD,我們有以下庫表:

    1.數據庫庫表
    T_Book.sql

    DROP ? TABLE ?T_Book;

    CREATE ? TABLE ?T_Book?(
    ???????id?
    INT ? NOT ? NULL ?AUTO_INCREMENT
    ?????,?name?
    VARCHAR ( 50 )
    ?????,?manufacturer?
    VARCHAR ( 50 )
    ?????,?pagecount?
    INT
    ?????,?
    PRIMARY ? KEY ?(id)
    );


    T_DVD.sql
    DROP?TABLE?T_DVD;

    CREATE?TABLE?T_DVD?(
    ???????id?
    INT?NOT?NULL?AUTO_INCREMENT
    ?????,?name?
    VARCHAR(50)
    ?????,?manufacturer?
    VARCHAR(50)
    ?????,?regioncode?
    VARCHAR(30)
    ?????,?
    PRIMARY?KEY?(id)
    );


    2.配置文件
    配置文件和普通配置文件沒有區(qū)別

    TBook.hbm.xml:
    <?xml?version="1.0"?>
    <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
    >
    <hibernate-mapping?package="cn.blogjava.start">
    ????
    <class?name="TBook"?table="T_Book"?catalog="sample">
    ????????
    <id?name="id"?column="id"?type="java.lang.Integer">
    ????????????
    <generator?class="native"?/>
    ????????
    </id>

    ????????
    <property?name="name"?type="java.lang.String"?column="name"/>
    ????????
    <property?name="manufacturer"?type="java.lang.String"?column="manufacturer"/>????????
    ????????
    <property?name="pageCount"?type="java.lang.Integer"?column="pagecount"/>????????
    ????
    </class>
    </hibernate-mapping>

    TDVD.hbm.xml:
    <?xml?version="1.0"?>
    <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
    >
    <hibernate-mapping?package="cn.blogjava.start">
    ????
    <class?name="TDVD"?table="T_DVD"?catalog="sample">
    ????????
    <id?name="id"?column="id"?type="java.lang.Integer">
    ????????????
    <generator?class="native"?/>
    ????????
    </id>

    ????????
    <property?name="name"?type="java.lang.String"?column="name"/>
    ????????
    <property?name="manufacturer"?type="java.lang.String"?column="manufacturer"/>????????
    ????????
    <property?name="regionCode"?type="java.lang.String"?column="regioncode"/>????????
    ????
    </class>
    </hibernate-mapping>

    3.測試代碼
    HibernateTest.java
    package?cn.blogjava.start;

    import?java.util.Iterator;
    import?java.util.List;

    import?junit.framework.Assert;
    import?junit.framework.TestCase;

    import?org.hibernate.HibernateException;
    import?org.hibernate.Session;
    import?org.hibernate.SessionFactory;
    import?org.hibernate.Transaction;
    import?org.hibernate.cfg.Configuration;


    public?class?HibernateTest?extends?TestCase?{
    ????
    ????Session?session?
    =?null;
    ????
    /**
    ?????*?JUnit中的setUp方法在TestCase初始化的時候會自動調用
    ?????*?一般用于初始化公用資源
    ?????
    */
    ????
    protected?void?setUp()?{
    ????????
    try?{
    ????????????
    /**
    ?????????????*?可以采用hibernate.properties或者hibernate.cfg.xml
    ?????????????*?配置文件的初始化代碼
    ?????????????*?
    ?????????????*?采用hibernate.properties
    ?????????????*?Configuration?config?=?new?Configuration();
    ?????????????*?config.addClass(TUser.class);
    ?????????????
    */
    ????????????
    ????????????
    //采用hibernate.cfg.xml配置文件,與上面的方法對比,兩個差異
    ????????????
    //1.Configuration的初始化方式
    ????????????
    //2.xml
    ????????????Configuration?config?=?new?Configuration().configure();
    ????????????SessionFactory?sessionFactory?
    =?config.buildSessionFactory();
    ????????????session?
    =?sessionFactory.openSession();
    ????????????
    ????????}?
    catch?(HibernateException?e)?{
    ????????????
    //?TODO:?handle?exception
    ????????????e.printStackTrace();
    ????????}????????
    ????}

    ????
    /**
    ?????*?JUnit中的tearDown方法在TestCase執(zhí)行完畢的時候會自動調用
    ?????*?一般用于釋放資源
    ?????
    */????
    ????
    protected?void?tearDown()?{
    ????????
    try?{
    ????????????session.close();????????
    ????????}?
    catch?(HibernateException?e)?{
    ????????????
    //?TODO:?handle?exception
    ????????????e.printStackTrace();
    ????????}????????
    ????}????
    ????
    ????
    /**
    ?????*?對象持久化測試(Insert方法)
    ?????
    */????????
    ????
    public?void?testInsert()?{
    ????????Transaction?tran?
    =?null;
    ????????
    try?{
    ????????????tran?
    =?session.beginTransaction();
    ????????????TBook?book1?
    =?new?TBook();
    ????????????
    ????????????book1.setManufacturer(
    "電子工業(yè)");
    ????????????book1.setName(
    "Java?beginner");
    ????????????book1.setPageCount(
    501);
    ????????????
    ????????????TBook?book2?
    =?new?TBook();
    ????????????book2.setManufacturer(
    "機械工業(yè)");
    ????????????book2.setName(
    "Thinking?in?java");
    ????????????book2.setPageCount(
    1201);
    ????????????
    ????????????TDVD?dvd1?
    =?new?TDVD();
    ????????????dvd1.setManufacturer(
    "columnibia");
    ????????????dvd1.setName(
    "Lord?king");
    ????????????dvd1.setRegionCode(
    "5?area");
    ????????????
    ????????????TDVD?dvd2?
    =?new?TDVD();
    ????????????dvd2.setManufacturer(
    "sony");
    ????????????dvd2.setName(
    "Forrest?gump");
    ????????????dvd2.setRegionCode(
    "3?area");????????????

    ????????????session.save(book1);
    ????????????session.save(book2);
    ????????????session.save(dvd1);
    ????????????session.save(dvd2);
    ????????????session.flush();
    ????????????tran.commit();
    ????????????Assert.assertEquals(book1.getId().intValue()
    >0,?true);
    ????????????Assert.assertEquals(book2.getId().intValue()
    >0,?true);
    ????????????Assert.assertEquals(dvd1.getId().intValue()
    >0,?true);
    ????????????Assert.assertEquals(dvd2.getId().intValue()
    >0,?true);
    ????????}?
    catch?(HibernateException?e)?{
    ????????????
    //?TODO:?handle?exception
    ????????????e.printStackTrace();
    ????????????Assert.fail(e.getMessage());
    ????????????
    if(tran?!=?null)?{
    ????????????????
    try?{
    ????????????????????tran.rollback();
    ????????????????}?
    catch?(Exception?e1)?{
    ????????????????????
    //?TODO:?handle?exception
    ????????????????????e1.printStackTrace();
    ????????????????}
    ????????????}
    ????????}
    ????}
    ????
    ????
    /**
    ?????*?對象讀取測試(Select方法)
    ?????
    */????????????
    ????
    public?void?testSelect(){

    ????????//指定了具體父類,如果是from TItem,是會失敗的。
    ????????List?list?
    =?session.createQuery("?from?cn.blogjava.start.TItem").list();
    ????????
    ????????Iterator?it?
    =?list.iterator();
    ????????
    while?(it.hasNext())?{
    ????????????TItem?item?
    =?(TItem)it.next();
    ????????????System.out.println(item.getName());
    ????????????
    ????????}
    ????}
    }
    posted on 2006-07-05 15:00 knowhow 閱讀(290) 評論(0)  編輯  收藏 所屬分類: ORM:Hibernate及其他
    主站蜘蛛池模板: 日本免费人成黄页网观看视频| 免费网站看av片| 大地资源二在线观看免费高清| 亚洲avav天堂av在线不卡| a毛片在线免费观看| 亚洲人成77777在线播放网站| 热久久这里是精品6免费观看| 中文字幕亚洲激情| 日本一区午夜艳熟免费| 国产精品亚洲а∨无码播放| a级毛片免费全部播放无码| 亚洲成av人在线视| 亚洲精品在线免费观看| 99热亚洲色精品国产88| 最好免费观看韩国+日本| 亚洲国产精品精华液| 亚洲av无码国产精品色在线看不卡 | 久久精品九九亚洲精品| www视频免费看| 亚洲日韩一区二区三区| 免费在线观看a级毛片| 丁香花在线观看免费观看图片| 亚洲丝袜美腿视频| 无码人妻精品一二三区免费 | jizz在线免费播放| 国产成人亚洲综合色影视| 久久ww精品w免费人成| 亚洲日韩国产二区无码| 免费大黄网站在线看| 91成人免费福利网站在线| 亚洲春黄在线观看| 日本不卡免费新一二三区| WWW免费视频在线观看播放| 亚洲黄色免费观看| 国产美女无遮挡免费网站| 久久99精品免费一区二区| 久久精品国产亚洲AV久| 亚洲色图综合在线| 美女视频黄的全免费视频网站| 免费精品视频在线| 亚洲导航深夜福利|