web-dev-qa-db-ja.com

Spring Bootのこのspring.jpa.open-in-view = trueプロパティとは何ですか?

Spring Bootのドキュメントで、JPA構成spring.jpa.open-in-view=trueのこのプロパティを見ました。ちなみに、これはtrueに設定されていたので、デフォルト値ですか?

それは本当にどういう意味ですか?この振る舞いについての説明は見つかりませんでした。

SessionFactoryの代わりにHibernate EntityManagerFactoryを使用する必要がありますか?はいの場合、どのようにEntityManagerFactoryに設定できますか?

ヘルプを感謝します。

ありがとう!

76
Carlos Alberto

このプロパティは、現在のスレッドにOpenEntityManagerInViewInterceptorを登録するEntityManagerを登録するため、Webリクエストが完了するまで同じEntityManagerを保持します。 Hibernate SessionFactoryなどとは関係ありません。

32
dunni

残念ながら、 OSIV(Open Session in View)はデフォルトでSpring Bootで有効になっています 、および OSIVはパフォーマンスとスケーラビリティの観点からは本当に悪い考えです です。

そのため、application.properties構成ファイルに次のエントリがあることを確認してください。

spring.jpa.open-in-view=false

これによりOSIVが無効になり、 LazyInitializationExceptionを正しい方法で処理 できるようになります。

バージョン2.0以降、Spring Bootの問題は OSIVの場合の警告 がデフォルトで有効になっているため、実稼働システムに影響するずっと前にこの問題を発見できます。

189
Vlad Mihalcea