はじめに
オブジェクト マッピングにおける双方向の関係は、多くの場合、回避するために慎重に処理する必要があります。データベースの不整合。 Hibernate は、これらの関係を確立するための簡潔な構文、mappedBy を提供します。この記事では、JPA と Hibernate での mappedBy の目的と使用法について説明します。
mappedBy とは?
MappedBy は、所有者エンティティの主キーが所有テーブルの列。これにより、一方のテーブルのみが他方のテーブルへの外部キーを持つ、双方向の関係をマッピングできます。これにより、所有者エンティティがリレーションシップの所有権を保持し、循環リレーションシップが回避されます。
mappedBy の目的
MappedBy は、オブジェクト内の重複した外部キー制約を回避する問題を解決します。双方向の関係。一方のテーブルを所有者として指定し、その主キーをもう一方のテーブルに保存することで、一貫したデータ整合性が保証されます。
使用法
mappedBy を使用するには、アノテーションを付ける必要があります。 mappedBy 属性を持つ子エンティティの @JoinColumn または @JoinTable。この属性は、関係を表す所有者エンティティ内のプロパティの名前を取得します。
例
クエリで提供される例を考えてみましょう。
<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinColumn(name="IDAIRLINE") public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }</code>
@JoinColumn アノテーションは、外部キー制約を AirlinesFlight テーブルの IDAIRLINE 列に割り当てます。ただし、mappedBy 属性がありません。
Airline を関係の所有者にするには、次のように注釈を変更できます。
<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinColumn(name="IDAIRLINE", mappedBy="airline") public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }</code>
mappedBy="airline" を追加することで、次のようになります。 AirlinesFlight テーブルの IDAIRLINE 列が、Airline エンティティの主キーであることを確認します。これにより、Airline テーブルに重複した外部キーを必要とせずに、Airline が AirlinesFlight インスタンスを所有する双方向の関係が確立されます。
以上がJPA と Hibernate の `mappedBy` 属性は双方向の関係の管理にどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。