JPA Fetch
629 ワード
JPAカスケード属性のfetchは、カスケード関係をロードする属性であり、
FetchType.LAZY(怠惰ロード):定義された属性に関連付けられたデータはすぐにデータベースからロードされず、同じセッションでいつ使うか、いつ取るか(データベースへの再アクセス).しかしsessionが閉じた後、再び取ることができなくて、異常を報告します:
FetchType.EAGER(急負荷):定義された属性に関連付けられたデータはすぐにメモリにロードされるので、セッションがオフになっても取り出すことができます.一般的に
例外
FetchType.LAZY
怠け者ロードとFetchType.EAGER
急ロードに分けられるFetchType.LAZY(怠惰ロード):定義された属性に関連付けられたデータはすぐにデータベースからロードされず、同じセッションでいつ使うか、いつ取るか(データベースへの再アクセス).しかしsessionが閉じた後、再び取ることができなくて、異常を報告します:
org.hibernate.LazyInitializationException
.この異常を解決するにはLAZYをEAGERに変換する必要がある.一般的に@OneToMany
はLAZYFetchType.EAGER(急負荷):定義された属性に関連付けられたデータはすぐにメモリにロードされるので、セッションがオフになっても取り出すことができます.一般的に
@ManyToOne
はEAGERである.例外
org.hibernate.LazyInitializationException
の解決策として、エンティティクラスに注釈Proxy(lazy=false)
を付けてデフォルトの怠け者ロードをオフにする方法もあります.