ホームページ > Java > &#&チュートリアル > Spring Boot の「spring.jpa.open-in-view=true」を使用する必要がありますか?

Spring Boot の「spring.jpa.open-in-view=true」を使用する必要がありますか?

DDD
リリース: 2024-11-30 03:58:13
オリジナル
338 人が閲覧しました

Should You Use Spring Boot's `spring.jpa.open-in-view=true`?

"Spring Boot の spring.jpa.open-in-view=true: OSIV アンチパターンとその影響の解明

ビューで開いているセッションを理解する(OSIV)

Spring Boot ドキュメントの spring.jpa.open-in-view プロパティは、サーブレット リクエストの処理フェーズ中に Hibernate のセッションを開いたままにするかどうかを制御するフラグです。デフォルトでは、このプロパティは、 true に設定され、OSIV パターンがアクティブになります。

使用の結果OSIV

OSIV パターンには、いくつかの重大な欠点があります:

  • データベース パフォーマンスの低下: レンダリング フェーズ中に自動コミット モードが使用され、負担がかかります。データベースサーバー上で。
  • の混乱懸念事項: データベース ステートメントはビジネス ロジックと UI の両方によって生成され、統合テストとコードのメンテナンスが複雑になります。
  • N 1 クエリの問題: UI の関連付けをトラバースする機能により、 N 1 件のクエリの問題。
  • 接続の輻輳:レンダリング フェーズ全体を通じてデータベース接続を開いたままにすると、リース時間が延長され、同時実行性が妨げられます。

Spring Boot で OSIV を無効にする

OSIV を無効にして、最適なパフォーマンスとスケーラビリティを確保するには:

  • 明示的に設定spring.jpa.open-in-view: true=false in the application.properties 構成ファイル。
  • バージョン 2.0 以降、OSIV がデフォルトで有効になっている場合、Spring Boot は警告を発行し、開発者に潜在的な問題を警告します。 .

LazyInitializationException の処理

If OSIV が無効になっている場合、UI が遅延初期化された関連付けにアクセスしようとすると、「LazyInitializationException」が発生する可能性があります。この例外を防ぐには:

  • フェッチ ジョインまたはフェッチ イーガー アノテーションを使用して、関連エンティティを積極的に取得します。
  • フェッチ グラフまたは JOIN FETCH 句を含む JPQL クエリを利用して、特定の関連エンティティを選択します。
  • データ アクセスに別のサービス層または DAO を使用して、カスタマイズされたサービスを可能にすることを検討してください。ユースケースに基づいたデータ取得戦略。

以上がSpring Boot の「spring.jpa.open-in-view=true」を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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