繼承是面向?qū)ο缶幊陶Z言的一個關(guān)鍵特性,其中子類可以獲取其父類的屬性。 此功能增強(qiáng)了代碼的可重用性。
關(guān)系數(shù)據(jù)庫不支持繼承機(jī)制。 因此,Java Persistence API(JPA)用于映射關(guān)系數(shù)據(jù)庫模型中的繼承關(guān)鍵特性。
以下是最常用的JPA繼承注釋 -
@Inheritence
- 此注解應(yīng)用于根實(shí)體類以定義繼承策略。 如果沒有使用此注釋定義策略類型,那么它遵循單表戰(zhàn)略。@MappedSuperclass
- 此注釋應(yīng)用于由其子類繼承的類。 映射的超類不包含任何單獨(dú)的表。@DiscriminatorColumn
- 鑒別器屬性將一個實(shí)體與另一個實(shí)體區(qū)分開來。 因此,該注釋用于提供鑒別器列的名稱。 僅需要在根實(shí)體類上指定此注釋。@DiscriminatorValue
- 此注釋用于指定表示特定實(shí)體的值的類型。 需要在子實(shí)體類中指定此注釋。注 - 如果我們未傳遞鑒別器列的名稱及其值,那么JPA默認(rèn)將其視為默認(rèn)值。 它將
DTYPE
視為鑒別器列名稱和實(shí)體名稱作為鑒別器值。
JPA提供了三種策略,通過這些策略我們可以在數(shù)據(jù)庫中輕松實(shí)現(xiàn)持久化繼承。