JPA OneToOne 関係における遅延読み込みの不満への対処
このクエリは、Hibernate での過剰な数の結合によりパフォーマンスが低下しているアプリケーションに関するものです。クエリ。 @OneToOne と @ManyToOne に FetchType.LAZY のアノテーションを付けているにもかかわらず、遅延読み込みが有効になっていないようです。
問題の根本
問題は深いところにありますエンティティ間の OneToOne およびManyToOne 関係の階層。 ManyToMany および OneToMany 関係は簡単に遅延させることができますが、特定の種類の OneToOne 関連には同じことが当てはまりません。
解決策
A. Nullable OneToOne Relationship (Unconstrained)
関連付けられたプロパティが null になる可能性がある制約のない 1 対 1 の関連付けは、バイトコード インストルメンテーションなしではプロキシできません。これは、所有者エンティティは、関連付けにプロキシまたは null が含まれているかどうかを知る必要があり、ベース テーブルの列だけからは判断できないためです。
B. Null 不可の OneToOne 関係
Null 不可の 1 対 1 関連付けの場合、次のオプションが利用可能です:
- 関連付けを必須および遅延として指定します: @OneToOne (オプション = false、フェッチ = FetchType.LAZY)
-
マップ結合関係としての関連付け。所有者テーブルに外部キー列を追加します:
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="other_entity_fk") public OtherEntity getOther()
C. ManyToOne 関係
ManyToOne 関係は、制限なしで遅延させることができます: @ManyToOne(fetch=FetchType.LAZY)。ただし、このアノテーションがクエリ自体で上書きされていないことを確認してください。
考慮事項
OneToOne 関連付けの積極的な読み込みが重大なパフォーマンスの問題を引き起こしている場合、広範な設計上の欠陥が発生します。データモデルを調査する必要があります。最後の手段として、バイトコード インストルメンテーションが必要になる場合があります。
実装メモ
- この場合、persistence.xml ファイルは関係や構成の詳細を定義するために使用されません。 .
- 事後調査では、エンティティ クラス、クエリ、結果などの特定の詳細を共有する必要があります。 SQL、より正確な分析用。
以上がJPA @OneToOne 遅延読み込みが機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

jvm'sperformanceiscompetitivewitherruntimes、sped、safety、andproductivityの提供

javaachievesplatformedentenceTheThejavavirtualMachine(JVM)、avainwithcodetorunonanyplatformwithajvm.1)codescompiledintobytecode、notmachine-specificcode.2)

thejvmisanabstractcomputingMachineCrucialForrunningJavaProgramsDuetoitsPlatForm-IndopentInterChitecture.Itincludes:1)ClassLoaderForloadingClasses、2)Runtimedataareaforforforatastorage、3)executionEngineWithinterter、Jitcompiler、およびGarbagecolfecolfecolfececolfecolfer

jvmhasacloserelationshiptheosasittrantesjavabytecodecodecodecodecodecodecodecodecodecodecodecodecodetructions、manageSmemory、およびhandlesgarbagecollection.thisrelationshipallowsjavatorunonvariousosenvirnments、Butalsedentsはspeedifediferentjvmbeviorhiorsandosendisfredediferentjvmbehbehioorysando

Javaの実装「Write and、Run Everywherewhere」はBytecodeにコンパイルされ、Java仮想マシン(JVM)で実行されます。 1)Javaコードを書き、それをByteCodeにコンパイルします。 2)JVMがインストールされたプラットフォームでByteCodeが実行されます。 3)Javaネイティブインターフェイス(JNI)を使用して、プラットフォーム固有の機能を処理します。 JVMの一貫性やプラットフォーム固有のライブラリの使用などの課題にもかかわらず、Woraは開発効率と展開の柔軟性を大幅に向上させます。

javaachievesplatformentenceTheTheTheJavavirtualMachine(JVM)、CodetorunondifferentoperatingSystemswithOutModification.thejvmcompilesjavacodeplatform-IndopentedbyTecodeを承認することを許可します

javaispowerfulfulduetoitsplatformindepentence、object-orientednature、richstandardlibrary、performancecapability、andstrongsecurityfeatures.1)platformendependenceallowseplicationStorunonaydevicesupportingjava.2)オブジェクト指向のプログラマン型

上位のJava関数には、次のものが含まれます。1)オブジェクト指向プログラミング、サポートポリ型、コードの柔軟性と保守性の向上。 2)例外処理メカニズム、トライキャッチ式ブロックによるコードの堅牢性の向上。 3)ゴミ収集、メモリ管理の簡素化。 4)ジェネリック、タイプの安全性の向上。 5)コードをより簡潔で表現力豊かにするためのAMBDAの表現と機能的なプログラミング。 6)最適化されたデータ構造とアルゴリズムを提供するリッチ標準ライブラリ。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
