ホームページ  >  記事  >  Java  >  「MappedBy」は JPA と Hibernate での双方向の関係をどのように促進しますか?

「MappedBy」は JPA と Hibernate での双方向の関係をどのように促進しますか?

DDD
DDDオリジナル
2024-11-01 21:45:02875ブラウズ

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

JPA と Hibernate の MappedBy について

JPA や Hibernate のようなオブジェクト リレーショナル マッピング (ORM) フレームワークでは、MappedBy は便利なアノテーションです。エンティティクラス間の双方向の関係を確立します。このアノテーションは、1 対多および多対 1 の関係のコンテキストで使用されます。

推奨される使用法

MappedBy の推奨される使用法は次のとおりです。

  • 1 対多の関係: 1 対多の関係では、関係の「多」側 (コレクションを持つ側) に MappedBy 注釈が必要です。このアノテーションは、外部キー制約を保持するリレーションシップの「一方」側のフィールドの名前を指定します。
  • 多対 1 のリレーションシップ: 多対 1 の場合関係では、関係の「一方」側 (単一の参照オブジェクトを持つ側) に MappedBy アノテーションが必要です。このアノテーションは、外部キー制約を保持するリレーションシップの「多」側のフィールドの名前を指定します。

MappedBy の目的

MappedBy は機能します。いくつかの目的:

  • 双方向トラバーサル: 双方向のリレーションシップでは、MappedBy を使用すると、両方のテーブルで明示的な外部キー定義を必要とせずにリレーションシップを両方向にトラバースできます。
  • 最適化: の所有権を指定することで、この関係により、MappedBy は不必要な結合テーブルや外部キーを回避することでデータベースのパフォーマンスを最適化できます。 constraints.

Example

指定した例では、多くのAirlineFlightsと1つのAirlineに属するAirlineFlightsを所有するAirline、MappedByは、次のようにAirlineFlightクラスで使用する必要があります。 :

<code class="java">@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}</code>

この例では、@MapsId アノテーションは、 AirlinesFlight の IDAIRLINE フィールドは、Airline エンティティに対する外部キー制約として使用されます。ここで MappedBy を使用すると、両方のテーブルで外部キー制約を必要とせずに、Airline と AirlinesFlight の間に双方向の関係を確立できます。

以上が「MappedBy」は JPA と Hibernate での双方向の関係をどのように促進しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。