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

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

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

    小程人生

    統計

    留言簿(2)

    閱讀排行榜

    評論排行榜

    hibernate繼承實現

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

    一個類對應一個表(父類及子類)
    數據庫腳本
    CREATE TABLE `t_item1` (                                  
               `id` int(11) NOT NULL AUTO_INCREMENT,                   
               `manufacture` varchar(20) DEFAULT NULL,                 
               `name` varchar(20) DEFAULT NULL,                        
               PRIMARY KEY (`id`)                                      
             ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC 

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

    CREATE TABLE `t_dvd1` (                                   
              `id` int(11) NOT NULL AUTO_INCREMENT,                   
              `name` varchar(20) DEFAULT NULL,                        
              `manufacture` varchar(20) DEFAULT NULL,                 
              `regioncode` varchar(20) DEFAULT 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(11) NOT NULL AUTO_INCREMENT,                  
               `name` varchar(20) DEFAULT NULL,                       
               `manufacture` varchar(20) DEFAULT NULL,                
               `pagecount` int(11) DEFAULT NULL,                      
               PRIMARY KEY (`id`)                                     
             ) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
     CREATE TABLE `t_dvd2` (                                  
              `id` int(11) NOT NULL AUTO_INCREMENT,                  
              `name` varchar(23) DEFAULT NULL,                       
              `manufacture` varchar(20) DEFAULT NULL,                
              `regioncode` varchar(20) DEFAULT 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(11) NOT NULL AUTO_INCREMENT,                 
               `name` varchar(20) DEFAULT NULL,                      
               `manufacture` varchar(20) DEFAULT NULL,               
               `pagecount` int(11) DEFAULT NULL,                     
               `regioncode` varchar(20) DEFAULT NULL,                
               `category` varchar(11) DEFAULT 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 2008-07-11 10:28 小程人生 閱讀(5604) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久精品国产亚洲7777| 久久精品国产亚洲网站| 久久不见久久见免费影院www日本| 国内精品99亚洲免费高清| 日本免费大黄在线观看| 大桥未久亚洲无av码在线| 中文字幕精品亚洲无线码一区| 1000部啪啪毛片免费看| 久久亚洲中文无码咪咪爱| 国产亚洲精品一品区99热| 男人的好看免费观看在线视频| 成人福利在线观看免费视频| 亚洲精品在线观看视频| 波多野结衣免费视频观看| 少妇无码一区二区三区免费| 精品一区二区三区免费毛片| 亚洲精品国产成人99久久| 啊灬啊灬别停啊灬用力啊免费看| 日韩免费在线视频| 国产亚洲精品美女2020久久| 久久亚洲精品中文字幕| 亚洲乱码日产精品a级毛片久久 | 亚洲五月午夜免费在线视频| 亚洲色图.com| 亚洲熟妇无码另类久久久| 午夜网站免费版在线观看| 99re视频精品全部免费| 免费一级毛片在线播放放视频| 亚洲成aⅴ人片在线观| 国内精品久久久久久久亚洲| 在线免费观看国产视频| 2021在线永久免费视频| 中国人免费观看高清在线观看二区| 亚洲国产欧洲综合997久久| 亚洲精品综合久久中文字幕| 亚洲日韩一页精品发布| 免费一级特黄特色大片在线观看| 无码国产精品一区二区免费式直播| 黄色免费在线网站| 日韩在线观看免费| 国产亚洲精品免费|