ホームページ > Java > &#&チュートリアル > JPA OneToOne 関係の遅延フェッチを構成するにはどうすればよいですか?

JPA OneToOne 関係の遅延フェッチを構成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-17 10:44:25
オリジナル
1005 人が閲覧しました

How Can I Configure Lazy Fetching for JPA OneToOne Relationships?

JPA OneToOne リレーションの遅延フェッチの宣言的構成

JPA アプリケーションの一般的な最適化の 1 つは、リレーションシップの遅延フェッチを有効にすることです。デフォルトでは、JPA は OneToOne 関連付けを積極的に取得するため、関連付けられたエンティティが常に必要とは限らない状況ではパフォーマンスの問題が発生する可能性があります。この記事では、OneToOne 関係を遅延として構成する方法を検討し、熱心なフェッチがパフォーマンスのボトルネックを引き起こすというユーザーが直面する特定の問題に対処します。

まず、制約のない (null 許容の) 1 対 1 の関連付けを明確にすることが重要です。バイトコード計測なしではプロキシできません。これは、所有エンティティが関連付けプロパティにプロキシを含めるか null を含めるかを決定する必要があり、ベース テーブルの列のみに基づいて決定することはできないためです。

多対 1 の関連付け (および 1 対多くの関連付け)、遅延フェッチが可能です。所有エンティティは、その外部キーを簡単にチェックして (または 1 対多の関連付けの空のコレクション プロキシを作成して)、オンデマンドで関連付けを設定できます。

@ManyToOne 関連付けの遅延フェッチを有効にするには、@ManyToOne注釈には fetch=FetchType.LAZY を使用して注釈を付けることができます。ただし、クエリ自体がこの設定を上書きしないことを確認することが重要です。

@OneToOne 関連付けの場合、null 値を許容できない場合は、次のように指定できます。

@OneToOne(optional = false, fetch = FetchType.LAZY)
ログイン後にコピー

関連付けが null 可能で変更できない場合、バイトコード インストルメンテーションが唯一の選択肢となります。

別のシナリオが発生します。 @OneToOne 関連付けでは、結果のクエリに多数の結合が含まれるため、パフォーマンスの問題が発生します。このような場合は、モデルを検査し、多対一側で一意の制約を持つ 1 対多の関係を使用するなどの代替アプローチの実装を検討することをお勧めします。

以上がJPA OneToOne 関係の遅延フェッチを構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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