[Java] Hibernate ORM で org.hibernate.LazyInitializationException が出た時の対処法

Hibernate ORM を使っていて、以下のような例外が発生しました:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ***, could not initialize proxy - no Session


原因を調べたところ、これは、lazy loading が有効になっている場合、延期されていた loading が必要になった時点で Hibernate のセッションがクローズ済みのため、lazy loading に失敗した、というもののようです。

単純な対処方法としては、Hibernate ORM の設定で lazy loading を false にすればよいのですが、lazy loading の目的である「必要になるまで読み込みを遅らせてパフォーマンスを上げる」という部分は当然犠牲になります。

他によい解決方法があるといいのですが…

参考サイト

HibernateのLazy initializeエラーでビューを表示できない – PukiWiki


Pocket
Bookmark this on Yahoo Bookmark

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>