JPA繼承簡介

繼承是面向對象編程語言的一個關鍵特性,其中子類可以獲取其父類的屬性。 此功能增強了代碼的可重用性。

關係數據庫不支持繼承機制。 因此,Java Persistence API(JPA)用於映射關係數據庫模型中的繼承關鍵特性。

JPA繼承註解

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

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

注 - 如果我們未傳遞鑑別器列的名稱及其值,那麼JPA默認將其視爲默認值。 它將DTYPE視爲鑑別器列名稱和實體名稱作爲鑑別器值。

JPA繼承策略

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

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