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

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

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

    常言笑的家

    Spring, Hibernate, Struts, Ajax, RoR

    hibernate繼承實現

    hiberate繼承分為三種方式:一個表對應所有繼承的類,具體類對應一個表,一個類對應一個表(父類及子類)

    一個類對應一個表(父類及子類)
    數據庫腳本

    CREATE TABLE `t_item1` (                                   
               `id` 
    int(11NOT NULL AUTO_INCREMENT,                    
               `manufacture` 
    varchar(20DEFAULT NULL,                  
               `name` 
    varchar(20DEFAULT NULL,                         
               
    PRIMARY KEY (`id`)                                       
             ) ENGINE
    =InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC  

    CREATE TABLE `t_book1` (                                                                  
               `id` 
    int(11NOT NULL AUTO_INCREMENT,                                                   
               `name` 
    varchar(20DEFAULT NULL,                                                        
               `manufacture` 
    varchar(20DEFAULT NULL,                                                 
               `pagecount` 
    int(11DEFAULT NULL,                                                       
               
    PRIMARY KEY (`id`)                                                                      
             ) ENGINE
    =InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='InnoDB free: 3072 kB'  

    CREATE TABLE `t_dvd1` (                                    
              `id` 
    int(11NOT NULL AUTO_INCREMENT,                    
              `name` 
    varchar(20DEFAULT NULL,                         
              `manufacture` 
    varchar(20DEFAULT NULL,                  
              `regioncode` 
    varchar(20DEFAULT NULL,                   
              
    PRIMARY KEY (`id`)                                       
            ) ENGINE
    =InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC  
    類代碼
    public class TItem1 implements Serializable {
     
    private int id;
     
    private String name;
     
    private String manufacture;

     
    public int getId() {
      
    return id;
     }


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


     
    public String getName() {
      
    return name;
     }


     
    public void setName(String name) {
      
    this.name = name;
     }


     
    public String getManufacture() {
      
    return manufacture;
     }


     
    public void setManufacture(String manufacture) {
      
    this.manufacture = manufacture;
     }


    }



    public class TBook1 extends TItem1 implements Serializable {
     
    private int pagecount;

     
    public int getPagecount() {
      
    return pagecount;
     }


     
    public void setPagecount(int pagecount) {
      
    this.pagecount = pagecount;
     }


    }


    public class TDvd1 extends TItem1 implements Serializable {
    private String regioncode;

    public String getRegioncode() {
     
    return regioncode;
    }


    public void setRegioncode(String regioncode) {
     
    this.regioncode = regioncode;
    }


    }

    配置文件
    <?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>
    <class name="mypackage.TItem1" table="t_item1">
     
    <id name="id" column="id">
      
    <generator class="identity"/>
     
    </id>
     
    <property name="name" column="name"/>
     
    <property name="manufacture" column="manufacture"/>
     
    <joined-subclass name="mypackage.TBook1" table="t_book1">
      
    <key column="id"/>
      
    <property name="pagecount" column="pagecount" type="java.lang.Integer"/>
     
    </joined-subclass>
     
    <joined-subclass name="mypackage.TDvd1" table="t_dvd1">
      
    <key column="id"/>
      
    <property name="regioncode" column="regioncode" type="java.lang.String"/>
     
    </joined-subclass>
    </class>
     
    </hibernate-mapping>
    具體類對應一個表
    數據庫腳本
     CREATE TABLE `t_book2` (                                  
               `id` 
    int(11NOT NULL AUTO_INCREMENT,                   
               `name` 
    varchar(20DEFAULT NULL,                        
               `manufacture` 
    varchar(20DEFAULT NULL,                 
               `pagecount` 
    int(11DEFAULT NULL,                       
               
    PRIMARY KEY (`id`)                                      
             ) ENGINE
    =MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 
     
    CREATE TABLE `t_dvd2` (                                   
              `id` 
    int(11NOT NULL AUTO_INCREMENT,                   
              `name` 
    varchar(23DEFAULT NULL,                        
              `manufacture` 
    varchar(20DEFAULT NULL,                 
              `regioncode` 
    varchar(20DEFAULT NULL,                  
              
    PRIMARY KEY (`id`)                                      
            ) ENGINE
    =MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=latin1  
    類代碼
    public abstract class TItem2 implements java.io.Serializable {
     
    private int id;
     
    private String name;
     
    private String manufacture;

     
    public int getId() {
      
    return id;
     }


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


     
    public String getName() {
      
    return name;
     }


     
    public void setName(String name) {
      
    this.name = name;
     }


     
    public String getManufacture() {
      
    return manufacture;
     }


     
    public void setManufacture(String manufacture) {
      
    this.manufacture = manufacture;
     }


    }



    public class TDvd2 extends TItem2 implements Serializable {
     
    private String regioncode;

     
    public String getRegioncode() {
      
    return regioncode;
     }


     
    public void setRegioncode(String regioncode) {
      
    this.regioncode = regioncode;
     }


    }


    public class TBook2 extends TItem2 implements Serializable {
     
    private int pagecount;

     
    public int getPagecount() {
      
    return pagecount;
     }


     
    public void setPagecount(int pagecount) {
      
    this.pagecount = pagecount;
     }


    }

    配置文件
    <?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>
     
    <class name="mypackage.TDvd2" table="t_dvd2">
      
    <id name="id" column="id">
       
    <generator class="identity"/>
      
    </id>
      
    <property name="name" column="name"/>
      
    <property name="manufacture" column="manufacture"/>
      
    <property name="regioncode" column="regioncode"/>
     
    </class>
     
    <class name="mypackage.TBook2" table="t_book2">
      
    <id name="id" column="id">
       
    <generator class="identity"/>
      
    </id>
      
    <property name="name" column="name"/>
      
    <property name="manufacture" column="manufacture"/>
      
    <property name="pagecount" column="pagecount"/>
     
    </class>
    </hibernate-mapping>
    一個表對應所有繼承的類
    數據庫腳本
    CREATE TABLE `t_item3` (                                 
               `id` 
    int(11NOT NULL AUTO_INCREMENT,                  
               `name` 
    varchar(20DEFAULT NULL,                       
               `manufacture` 
    varchar(20DEFAULT NULL,                
               `pagecount` 
    int(11DEFAULT NULL,                      
               `regioncode` 
    varchar(20DEFAULT NULL,                 
               `category` 
    varchar(11DEFAULT NULL,                   
               
    PRIMARY KEY (`id`)                                     
             ) ENGINE
    =MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1  
    類代碼
    public class TItem3 implements Serializable {
     
    private int id;
     
    private String name;
     
    private String manufacture;
     
    private String category;

     
    public int getId() {
      
    return id;
     }


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


     
    public String getName() {
      
    return name;
     }


     
    public void setName(String name) {
      
    this.name = name;
     }


     
    public String getManufacture() {
      
    return manufacture;
     }


     
    public void setManufacture(String manufacture) {
      
    this.manufacture = manufacture;
     }


     
    public String getCategory() {
      
    return category;
     }


     
    public void setCategory(String category) {
      
    this.category = category;
     }


    }



    public class TDvd3 extends TItem3 implements Serializable {
     
    private String regioncode;

     
    public String getRegioncode() {
      
    return regioncode;
     }


     
    public void setRegioncode(String regioncode) {
      
    this.regioncode = regioncode;
     }


    }


    public class TBook3 extends TItem3 implements Serializable {
     
    private int pagecount;

     
    public int getPagecount() {
      
    return pagecount;
     }


     
    public void setPagecount(int pagecount) {
      
    this.pagecount = pagecount;
     }


    }

    配置文件
    <?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>
    <class name="mypackage.TItem3" table="t_item3">
     
    <id name="id" column="id">
      
    <generator class="identity"/>
     
    </id>
     
    <discriminator column="category" type="java.lang.String"/>
     
    <property name="name" column="name"/>
     
    <property name="manufacture" column="manufacture"/>
     
    <subclass name="mypackage.TDvd3" discriminator-value="1">
      
    <property name="regioncode" column="regioncode"/>
     
    </subclass>
     
    <subclass name="mypackage.TBook3" discriminator-value="0">
      
    <property name="pagecount" column="pagecount"/>
     
    </subclass>
    </class>
    </hibernate-mapping>
    三種方式的優缺點
    每個類對應一個表
    缺點:創建表過多,查詢需用求外連接,優點:某個表字段發生變化只需修改相對表,支持多態查詢,符合關系型數據庫設計
    具體類對應一個表
    缺點:數據表包含重復字段,如果父類發生變化子類也要變化,查詢父類時要查詢所有子類,不支持多態查詢,優點:符合關系型數據庫設計
    一個表對應所有類
    缺點:表中引入區分子類的字段,子類的字段不能創建為空,優點:只需一張表,有很好的查詢性能,只要修改一張表,支持多態查詢

    posted on 2010-10-08 23:25 常言笑 閱讀(233) 評論(0)  編輯  收藏 所屬分類: 技術總結

    My Links

    Blog Stats

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲熟妇av一区二区三区| 亚洲看片无码在线视频| 精品久久久久成人码免费动漫 | 亚洲色图.com| 热99re久久精品精品免费| a免费毛片在线播放| 亚洲成人免费在线观看| 又黄又大又爽免费视频| 久久国产色AV免费看| 日韩色视频一区二区三区亚洲 | 青青视频免费在线| 亚洲国语精品自产拍在线观看| 色吊丝最新永久免费观看网站 | 久久久久久久久无码精品亚洲日韩| 亚洲亚洲人成综合网络| 国产一精品一AV一免费孕妇| 大地资源中文在线观看免费版| 国产婷婷综合丁香亚洲欧洲| 亚洲中文字幕久久精品无码喷水 | 一个人看的免费观看日本视频www| 亚洲无砖砖区免费| 久久精品国产精品亚洲| 99精品全国免费观看视频| 青柠影视在线观看免费| 色欲aⅴ亚洲情无码AV蜜桃| 久久精品国产亚洲AV大全| 亚洲乱码中文字幕综合234| 成人免费看吃奶视频网站| 青青青国产手机频在线免费观看| 亚洲AV无码XXX麻豆艾秋| 亚洲白色白色在线播放| 亚洲热线99精品视频| 亚洲AV中文无码乱人伦在线视色 | 国产免费AV片无码永久免费| 国产成人精品免费视频网页大全| 免费无码作爱视频| 免费无码一区二区| 亚洲成AV人影片在线观看| 亚洲日韩国产一区二区三区在线 | 亚洲精品自在在线观看| 亚洲精品偷拍视频免费观看|