1
以下是JPA註釋類型層次結構,其中所有數據字段(以及關聯的getter和setters)都是超類型的成員,以及用於實現業務邏輯的抽象方法。有許多子類型在不添加數據成員的情況下實現這些抽象方法,因此我們使用單表繼承策略,以便我們只需要數據庫中的一個表來支持此類型層次結構。JPA/Hibernate:子類型與策略'模式'
我這樣做是因爲根據數據的內容,必須實現不同的行爲才能實現最終目標。
@Entity
@Table
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class SuperEntity {
// Several fields and getters and setters
...
// Abstract method declarations for business logic
...
}
@Entity
@DiscriminatorValue("some value")
public class SomeSubtype extends SuperEntity {
// Implementations of abstract methods
...
}
這是對JPA/Hibernate中鑑別器列概念的顛覆嗎?
一位同事認爲,由於數據的結構並不因子類型而異,因此抽象方法和相應的實現應該被移入類似策略模式的方法。他的觀念更好嗎?
我曾看過使用組合,但它使服務層中的某些事情有點混亂。但是,我想我同意你和我的同事越來越多地認爲我上面的遺傳方案並不是很好。我會在作文方面多做一些工作 - 謝謝你的回答。 – simpleton