ホームページ > Java > &#&チュートリアル > 「MappedBy」は JPA と Hibernate での双方向の関係をどのように促進しますか?

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

DDD
リリース: 2024-11-01 21:45:02
オリジナル
1007 人が閲覧しました

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 は不必要な結合テーブルや外部キー制約を回避してデー​​タベースのパフォーマンスを最適化できます。

指定した例では、多くのAirlineFlightsを所有するAirlineと、1つのAirlineに属するAirlineFlightsである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 アノテーションは、AirlineFlight の IDAIRLINE フィールドが、Airline エンティティに対する外部キー制約として使用されることを示します。ここで MappedBy を使用すると、両方のテーブルで外部キー制約を必要とせずに、Airline と AirlinesFlight の間に双方向の関係を確立できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート