JPA (Java Persistence API) は、Java クラスをデータベーステーブルにマップするためのさまざまなアノテーションを提供します。このような便利なアノテーションの 1 つは @MappedSuperclass です。これは、プロパティが他のエンティティ クラスによって継承される必要があるが、エンティティ自体ではないクラスを指定するために使用されます。 Vehicle、Car、Motorcycle などのクラスを含む実際の例を通じて、このアノテーションの有用性を探ってみましょう。
@MappedSuperclass とは何ですか?
@MappedSuperclass アノテーションは、クラスが独立したエンティティであってはならず、その属性がエンティティである他のクラスによって継承される必要があることを示すために使用されます。これは、基本クラス用に別のテーブルを作成せずに、複数のエンティティ間で共通の属性を共有したい場合に便利です。主な機能:
実践例
Vehicle、Car、Motorcycle のクラス階層を持つ例を作成してみましょう。Vehicle がスーパークラスです。1.基本クラス:Vehicle
リーリー
2.サブクラス:車
リーリー
3.サブクラス:オートバイ
リーリー
テーブルマッピング
上記のクラスを使用して、JPA はデータベースに次のテーブルを作成します:@MappedSuperclass
識別子の集中化: ID フィールドはスーパークラスで管理されます。スーパークラスをエンティティにもしたい場合 (例: 直接クエリの場合)、@MappedSuperclass の代わりに @Inheritance 継承戦略を使用します。 @MappedSuperclass は、基本クラスを個別のエンティティとして永続化する必要はないが、そのプロパティが複数のエンティティに関連する状況に最適です。
結論
@MappedSuperclass アノテーションは、JPA で再利用可能なクラス階層を作成するための強力なツールです。上の例では、Vehicle の共通属性を一元化すると同時に、Car エンティティと Motorcycle エンティティの柔軟性と独立性を維持することができました。このアプローチは、特に同様の特性を共有する複数のエンティティを含むシステムにおいて、よりクリーンでよりモジュール化された設計を促進します。
以上がJPA の @MappedSuperclass を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。