JPA繼承簡介


繼承是物件導向程式設計語言的一個關鍵特性,其中子類可以獲取其父類別的屬性。 此功能增強了程式碼的可重用性。

關聯式資料庫不支援繼承機制。 因此,Java Persistence API(JPA)用於對映關聯式資料庫模型中的繼承關鍵特性。

JPA繼承註解

以下是最常用的JPA繼承注釋 -

  • @Inheritence - 此註解應用於根實體類以定義繼承策略。 如果沒有使用此注釋定義策略型別,那麼它遵循單表戰略。
  • @MappedSuperclass - 此註釋應用於由其子類繼承的類。 對映的超類不包含任何單獨的表。
  • @DiscriminatorColumn - 鑑別器屬性將一個實體與另一個實體區分開來。 因此,該注釋用於提供鑑別器列的名稱。 僅需要在根實體類上指定此註釋。
  • @DiscriminatorValue - 此註釋用於指定表示特定實體的值的型別。 需要在子實體類中指定此註釋。

註 - 如果我們未傳遞鑑別器列的名稱及其值,那麼JPA預設將其視為預設值。 它將DTYPE視為鑑別器列名稱和實體名稱作為鑑別器值。

JPA繼承策略

JPA提供了三種策略,通過這些策略我們可以在資料庫中輕鬆實現持久化繼承。

  • 單表策略
  • 加入策略
  • 每表每類策略