Spring を使用して Hibernate 4 でアノテーションとの関係を定義する方法

Patricia Arquette
リリース: 2024-11-04 02:21:01
オリジナル
291 人が閲覧しました

How to Define Relationships with Annotations in Hibernate 4 using Spring?

Spring を使用した Hibernate 4 でのアノテーションとの関係の定義

提供されたクラスに対して Hibernate 4 でアノテーションを使用してさまざまなタイプの関係を実装するには、Foo

1 対多の一方向関係:

@OneToMany アノテーションと List< を使用して Foo クラスを構成します。バー>財産。 Bar クラスは変更しないでください。これにより、Foo が複数の関連付けられた Bar オブジェクトを持つことができる 1 対多の関係が確立されますが、Bar は Foo を参照することはできません。

双方向 1 対多の関係 (Foo.class によって管理) ):

Foo.class で cascade = CascadeType.ALL を指定して @OneToOne アノテーションを使用します。 @JoinColumn アノテーションを追加して、結合に使用する Bar.class の列を指定します。 Bar.class の場合、@OneToOne アノテーションを使用し、mappedBy = "bar" を指定して、関係が Foo.class によって管理されることを示します。

User- を使用した 1 対多の一方向関係管理対象結合テーブル:

@OneToMany アノテーションを @JoinTable アノテーションとともに使用して、別の結合テーブルを指定します。両側に @JoinColumn アノテーションを使用して結合列を定義します。必要に応じて、追加のクラスを使用して結合テーブルを表します。

外部キー マッピングを使用した双方向 1 対多の関係:

Foo.class では、 @OneToMany(mappedBy = "bar") を使用して関係をマップします。 Bar.class では、@ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) を @JoinColumn アノテーションとともに使用します。

Hibernate を使用した双方向多対多-管理対象結合テーブル:

Foo.class と Bar.class の両方で @ManyToMany を使用し、結合テーブルに @JoinTable アノテーションを使用して結合列を指定します。

ユーザー管理の結合テーブル オブジェクトを使用した双方向の多対多:

一方向の 1 対多の例と同様に、@JoinTable アノテーションを付けて @OneToMany を使用します。結合テーブルを表す別のクラスを作成し、@ManyToOne を使用して Foo.class と Bar.class の両方に関係をマップします。

フェッチ タイプの決定:

fetchType を使用します。 .LAZY は、関連するコレクションがアクセスされるまでロードを遅らせます。 fetchType.EAGER を使用してコレクションをすぐにロードしますが、パフォーマンスに影響を与える可能性があることに注意してください。 Service クラスで Hibernate.initialize() を使用して、特定のユースケースで遅延ロードされたコレクションを手動で初期化することを検討してください。

カスケード方向の決定:

@Cascade アノテーションを使用して、カスケード オプションを指定します。一般に、カスケードは所有関係の方向に変化します。アプリケーションのコンテキストで意味をなさない場合、子から親への更新や削除のカスケードは避けてください。

孤立したオブジェクトの削除:

@OneToMany アノテーションで orphanRemoval = true を設定すると、孤立したオブジェクト (つまり、他の親オブジェクトに関連付けられていないオブジェクト) が削除されたときに Hibernate が自動的に削除します。親オブジェクトのコレクションから。

以上がSpring を使用して Hibernate 4 でアノテーションとの関係を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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