a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > JSP > 正文

Hibernate實體對象繼承的三種方法

2024-09-05 00:23:08
字體:
來源:轉載
供稿:網友

Hibernate實體對象繼承的方法

   hibernate繼承策略總共有三種,一種是共用一張表;一種是每個類一張表,表里面儲存子類的信息和父類的信息;還有一種是通過表連接的方式,每個類都有一張表,但是子類對應的表只保存自己的信息,父類對應的表保存父類的信息,它們之間通過子類表和父類表的關聯來獲取所有的信息。

第一種方式,即共用一張表:

@Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="discriminator", discriminatorType=DiscriminatorType.STRING)//表示區分不同的對象的字段名 @DiscriminatorValue("person")//用來表示該對象是何種對象的,即區分器 public class Parent {   private int id;   private String name;      @Id   @GeneratedValue   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;   }  }  @Entity @DiscriminatorValue("child1") public class Child1 extends Parent {   private String email;    public String getEmail() {     return title;   }    public void setEmail(String email) {     this.email = email;   }     }    @Entity @DiscriminatorValue("child2") public class Child2 extends Parent {      private String address;    public String getAddress() {     return score;   }    public void setAddress(String address) {     this.address = address;   }    }      

 這種情況父類和所有子類的所有信息都保存在同一張表里面,通過我們指定的@DiscriminatorColumn對應的@DiscriminatorValue來區別不同的類。 當沒有指定@DiscriminatorValue的時候將使用全類名來作為DiscriminatorValue。

第二種策略是每個類一張表,保存所有信息:

@Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) @TableGenerator(    //一個類一張表,最重要的是要保證它們的id由一個生成器產生,@TableGenerator就是為了控制這個的     name="t_gen",     table="t_gen_table",     pkColumnName="t_pk",     valueColumnName="t_value",     pkColumnValue="person_pk",     initialValue=1,     allocationSize=1     ) public class Parent {   private int id;   private String name;      @Id   @GeneratedValue(generator="t_gen", strategy=GenerationType.TABLE)//這個就是用表生成器生成的,用同一個生成器就可以控制它們的id不重復   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;   }  }   @Entity public class Child2 extends Parent {      private String address;    public String getAddress() {     return score;   }    public void setAddress(String address) {     this.address = address;   }    }   @Entity public class Child1 extends Parent {   private String email;    public String getEmail() {     return title;   }    public void setEmail(String email) {     this.email = email;   }     } 

弟三種方式是采用表連接的方式:

@Entity @Inheritance(strategy=InheritanceType.JOINED)  public class Parent {   private int id;   private String name;      @Id   @GeneratedValue   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;   }  }  @Entity public class Child2 extends Parent {      private String address;    public String getAddress() {     return score;   }    public void setAddress(String address) {     this.address = address;   }    }   @Entity public class Child1 extends Parent {   private String email;    public String getEmail() {     return title;   }    public void setEmail(String email) {     this.email = email;   }     } 

         采用表連接的情況,還是每個類擁有自己的一張表,只是子類對應的表只保存子類的信息,其父類的信息由父類的表保存。當需要獲取子類的完整信息時通過表連接的方式連接子類的表和父類的表獲取對應信息。可以在子類的表上標注@PrimaryKeyJoinColumn(name="foreignKeyName")指明子類表相對于父類表外鍵的名稱。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蜜桃av一区二区三区 | 久久国产精品免费一区二区三区 | 夜夜操com| 色婷婷av一区二区三区软件 | 成人av免费在线 | 一级黄色录像视频 | 成人精品一区二区 | 成人亚洲视频 | 久久一区| 久久精品二区 | 久久夜色精品国产 | 久久第一区 | 日韩欧美在线一区 | 黄色免费视频 | 欧日韩不卡在线视频 | 麻豆av在线播放 | 亚洲精品久久久 | 国产一区二区三区免费在线观看 | 黄色av免费看 | 天天看片天天操 | 久免费视频 | 国产在线一区二区三区 | 一区二区三区四区视频 | 免费中文字幕 | 亚洲一区中文字幕在线观看 | 久久精品免费一区二区 | 欧美福利一区 | 成人午夜在线观看 | 精品伦理一区二区三区 | 久久久久亚洲精品 | 亚洲精品成人av | 成人精品一区二区三区中文字幕 | 五月天久久激情 | 日韩成人三级 | 久久国产乱子伦精品免费午夜,浪货好紧 | 日韩一区二区在线免费观看 | 一区二区三区国产好 | 亚洲成人免费 | 久久成人午夜 | 亚洲伦理在线观看 | 一 级做人爱全视频在线看 一级黄色裸体片 |