かなり複雑なGroovyアプリケーションを継承し、現在存在する厄介なクエリパターンをより良く解決できる方法を理解しようとしています。GroovyとHibernate - 1対多のリレーションシップでの実行クエリ
単に、私のようなものがあります:私は、私に<List>A
を返してA.findAllByUser(user)
を行うにしようよ、私はそのリストの上にitering起動したときしかし、私はさらにあるクエリの数百人を打ってる
Class A {
User user
Bravo bravo
static hasMany = [foo: Foo, bar: Long]
}
Class Foo {
User user
Delta delta
static belongsTo = [a: A]
static hasMany = [woo: Woo]
}
Class Woo {
User user
Alpha alpha
static belongsTo = [foo: Foo]
}
をbravo
およびfoo
を構築する。
しかし私は、これは、これら2つに触れるすべてのクエリは、常にこれらのクエリを行います(まだbravo
を打つクエリの数百を解決しないことを意味し、FooのクラスにFoo fetch:"join"
を追加しようとしましたとウークラスへWoo fetch: "join"
。
HQLを使用する場合、私はかなり初心者ですが、パフォーマンスや大規模なクエリで重大な問題が発生しています。この問題に取り組むには良い方法がありますか?
あなたはA' 'を反復処理するときは、また' A.foo'または 'A.bravo'から何かを読んでいます? 'toString'でもこれらのフィールドが読み込まれ、休止状態で読み込まれる可能性があります – Will
これはgroovyかgrails/gormアプリケーションですか? – injecteer