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提供了三種策略,通過這些策略我們可以在數據庫中輕鬆實現持久化繼承。
- 單表策略
- 加入策略
- 每表每類策略