婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Hibernate實(shí)體對(duì)象繼承的三種方法

Hibernate實(shí)體對(duì)象繼承的三種方法

熱門(mén)標(biāo)簽:電銷(xiāo)機(jī)器人免培訓(xùn) 潤(rùn)滑油銷(xiāo)售電銷(xiāo)機(jī)器人 電話(huà)機(jī)器人需要使用網(wǎng)絡(luò)嗎 南通通訊外呼系統(tǒng)產(chǎn)品介紹 海外圖書(shū)館地圖標(biāo)注點(diǎn) 如何看懂地圖標(biāo)注點(diǎn) 自繪地圖標(biāo)注數(shù)據(jù) 給地圖標(biāo)注得傭金 外呼系統(tǒng)使用方法

Hibernate實(shí)體對(duì)象繼承的方法

   hibernate繼承策略總共有三種,一種是共用一張表;一種是每個(gè)類(lèi)一張表,表里面儲(chǔ)存子類(lèi)的信息和父類(lèi)的信息;還有一種是通過(guò)表連接的方式,每個(gè)類(lèi)都有一張表,但是子類(lèi)對(duì)應(yīng)的表只保存自己的信息,父類(lèi)對(duì)應(yīng)的表保存父類(lèi)的信息,它們之間通過(guò)子類(lèi)表和父類(lèi)表的關(guān)聯(lián)來(lái)獲取所有的信息。

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

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name="discriminator", discriminatorType=DiscriminatorType.STRING)//表示區(qū)分不同的對(duì)象的字段名 
@DiscriminatorValue("person")//用來(lái)表示該對(duì)象是何種對(duì)象的,即區(qū)分器 
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; 
  } 
   
}  
    

 這種情況父類(lèi)和所有子類(lèi)的所有信息都保存在同一張表里面,通過(guò)我們指定的@DiscriminatorColumn對(duì)應(yīng)的@DiscriminatorValue來(lái)區(qū)別不同的類(lèi)。 當(dāng)沒(méi)有指定@DiscriminatorValue的時(shí)候?qū)⑹褂萌?lèi)名來(lái)作為DiscriminatorValue。

第二種策略是每個(gè)類(lèi)一張表,保存所有信息:

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
@TableGenerator(    //一個(gè)類(lèi)一張表,最重要的是要保證它們的id由一個(gè)生成器產(chǎn)生,@TableGenerator就是為了控制這個(gè)的 
    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)//這個(gè)就是用表生成器生成的,用同一個(gè)生成器就可以控制它們的id不重復(fù) 
  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; 
  } 
 
   
} 

         采用表連接的情況,還是每個(gè)類(lèi)擁有自己的一張表,只是子類(lèi)對(duì)應(yīng)的表只保存子類(lèi)的信息,其父類(lèi)的信息由父類(lèi)的表保存。當(dāng)需要獲取子類(lèi)的完整信息時(shí)通過(guò)表連接的方式連接子類(lèi)的表和父類(lèi)的表獲取對(duì)應(yīng)信息。可以在子類(lèi)的表上標(biāo)注@PrimaryKeyJoinColumn(name="foreignKeyName")指明子類(lèi)表相對(duì)于父類(lèi)表外鍵的名稱(chēng)。

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

您可能感興趣的文章:
  • 基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(詳解)
  • 基于Hibernate中配置文件的學(xué)習(xí)(分享)
  • 詳解 hibernate mapping配置
  • Spring Boot + Jpa(Hibernate) 架構(gòu)基本配置詳解
  • java中hibernate二級(jí)緩存詳解
  • Hibernate對(duì)數(shù)據(jù)庫(kù)刪除、查找、更新操作實(shí)例代碼
  • 深入理解hibernate的三種狀態(tài)
  • 詳解hibernate自動(dòng)創(chuàng)建表的配置

標(biāo)簽:內(nèi)江 南京 銅川 廣州 貸款邀約 黃石 樂(lè)山 大連

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Hibernate實(shí)體對(duì)象繼承的三種方法》,本文關(guān)鍵詞  Hibernate,實(shí)體,對(duì)象,繼承,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Hibernate實(shí)體對(duì)象繼承的三種方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Hibernate實(shí)體對(duì)象繼承的三種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 博乐市| 云阳县| 繁峙县| 淮阳县| 灵台县| 平罗县| 溧水县| 杭锦后旗| 金沙县| 姚安县| 平顺县| 榆树市| 繁昌县| 永清县| 南漳县| 襄汾县| 化隆| 兴和县| 布尔津县| 壤塘县| 苏尼特左旗| 永新县| 五华县| 基隆市| 康马县| 乌兰察布市| 晋州市| 凤翔县| 石台县| 万州区| 五莲县| 文登市| 白沙| 济宁市| 旬阳县| 新竹市| 浮山县| 彭阳县| 鄢陵县| 上杭县| 铁力市|