ドメインクラスでfetchModeを "eager"に設定するときの一般的なガイドラインは何ですか? fetchModeの長所と短所とデフォルトの "lazy"との比較Grails/GORMのデフォルトフェッチ戦略:fetchModeをいつ "eager"に設定するか? (熱狂vs.怠け者)
"eager"(fetchMode = eager)を使用する時期と、(fetchMode = lazy)を使用しない場合のユースケースをいくつか含めてください。
ドメインクラスでfetchModeを "eager"に設定するときの一般的なガイドラインは何ですか? fetchModeの長所と短所とデフォルトの "lazy"との比較Grails/GORMのデフォルトフェッチ戦略:fetchModeをいつ "eager"に設定するか? (熱狂vs.怠け者)
"eager"(fetchMode = eager)を使用する時期と、(fetchMode = lazy)を使用しない場合のユースケースをいくつか含めてください。
基本的に遅延ロードは、熱心な代替(パフォーマンス、リソースの使用)よりも多くの利点があります。すべてのリレーション(Grails 1.1以降)のデフォルトのgrails設定であるため、特定の問題が発生しない限り、一般的にはそれをeager fetching用に設定しないでください。異なるのHibernateセッションをaccross
巨大なデータベースを扱う場合、Eagerの取得は非常に危険です。このように、ドメインクラスを想像してみて:
// really bad example
class TreeNode {
String name
TreeNode parent
static hasMany = [ childNodes: TreeNode ]
static mapping {
parent lazy: false
childNodes lazy: false
}
}
あなたはTreeNodeのインスタンスのいずれかを読んだとき、それは自動的にメモリにデータベースからドメインクラスの他のすべてのインスタンスを引っ張ってきます。十分なインスタンスがある場合は、おそらくインスタンスを1つだけ取得してアプリケーションを終了させます。