JPA と Hibernate の mappedBy について
Java Persistence API (JPA) と Hibernate では、mappedBy は管理を容易にする重要なアノテーションです。エンティティ間の双方向の関係。これは 2 つの主な目的を果たします:
1.関係の逆側を示す:
mappedBy は、関係を所有していないエンティティを識別します。関連する属性にアクセスするためにそのエンティティ内のどのプロパティを使用するかを指定します。これは、両方のエンティティが相互に参照する双方向の関係で特に役立ちます。
2.外部キー制約の削除:
外部キー関係を作成する従来のアプローチとは異なり、mappedBy を使用すると、外部キー列を物理的に追加せずに関係を定義できます。代わりに、他のエンティティの既存の外部キーの存在を利用します。
双方向関係でのmappedByの使用:
mappedByの使用法を説明するには、次のことを考えてください。提供された例:
Airline.java:
<code class="java">@Entity @Table(name="Airline") public class Airline { // ... Other fields ... @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "IDAIRLINE") private Set<AirlineFlight> airlineFlights; }</code>
AirlineFlight.java:
<code class="java">@Entity @Table(name="AirlineFlight") public class AirlineFlight { // ... Other fields ... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "IDAIRLINE") private Airline airline; }</code>
この中でたとえば、Airline は、airlineFlights コレクションを所有しているため、所有エンティティになります。 Airlines から AirlinesFlight への関係は、airlineFlights プロパティを介して行われます。
AirlineFlight 側では、airline プロパティに @ManyToOne の注釈が付けられ、mappedBy = "airlineFlights" が付けられます。これは、AirlineFlight が関係の非所有側であることを指定し、航空会社のプロパティは、Airline のairlineFlights プロパティによってマップされます。
提供されたデータベース スキーマでは、AirlineFlights には、Airline への外部キーとして IDAIRLINE 列があります。 。したがって、Airline は実際にairlineFlights エンティティの所有者です。
mappedBy を使用すると、追加の外部キー列を追加の外部キー列を追加することなく、AirlineFlight に双方向の関係を確立できます。代わりに、JPA と Hibernate は、指定されたプロパティ マッピングに基づいてエンティティを自動的にリンクします。
以上が双方向関係を管理するための JPA と Hibernate の `mappedBy` の役割は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。