<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繼承實現(xiàn)

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

    一個類對應(yīng)一個表(父類及子類)
    數(shù)據(jù)庫腳本

    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>
    具體類對應(yīng)一個表
    數(shù)據(jù)庫腳本
     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>
    一個表對應(yīng)所有繼承的類
    數(shù)據(jù)庫腳本
    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>
    三種方式的優(yōu)缺點
    每個類對應(yīng)一個表
    缺點:創(chuàng)建表過多,查詢需用求外連接,優(yōu)點:某個表字段發(fā)生變化只需修改相對表,支持多態(tài)查詢,符合關(guān)系型數(shù)據(jù)庫設(shè)計
    具體類對應(yīng)一個表
    缺點:數(shù)據(jù)表包含重復(fù)字段,如果父類發(fā)生變化子類也要變化,查詢父類時要查詢所有子類,不支持多態(tài)查詢,優(yōu)點:符合關(guān)系型數(shù)據(jù)庫設(shè)計
    一個表對應(yīng)所有類
    缺點:表中引入?yún)^(qū)分子類的字段,子類的字段不能創(chuàng)建為空,優(yōu)點:只需一張表,有很好的查詢性能,只要修改一張表,支持多態(tài)查詢

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

    My Links

    Blog Stats

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线免费观看中文字幕| 91在线视频免费播放| 免费A级毛片av无码| free哆啪啪免费永久| 亚洲第一成年免费网站| 手机看片久久国产免费| 亚洲精品成a人在线观看| 亚洲成AV人片在线观看无码| 亚洲欧洲精品久久| 亚洲日韩精品无码专区加勒比| 国产精品亚洲一区二区三区久久 | 亚洲国产日韩在线人成下载 | 久久久亚洲精华液精华液精华液| 一级黄色毛片免费看| 免费人成在线观看网站| 久久久久久国产a免费观看黄色大片 | 国产又长又粗又爽免费视频| 91麻豆精品国产自产在线观看亚洲| 亚洲国产成人久久精品动漫 | 亚洲国色天香视频| 精品一区二区三区免费毛片| 黄床大片免费30分钟国产精品 | 久久久久久一品道精品免费看| 西西大胆无码视频免费| 国产精品亚洲w码日韩中文| 亚洲精品一区二区三区四区乱码 | 一个人看的免费视频www在线高清动漫 | 又粗又长又爽又长黄免费视频| 99久9在线|免费| 免费国产a国产片高清| 久久av无码专区亚洲av桃花岛| 亚洲精品国产精品| 免费国产午夜高清在线视频| 午夜免费福利网站| 亚洲AV日韩AV永久无码绿巨人| 国产亚洲漂亮白嫩美女在线| 9277手机在线视频观看免费| 亚洲伊人久久综合影院| 亚洲一区在线视频| 手机看片国产免费永久| 日本免费一本天堂在线|