グレイルでは、次のようなN:1の関係を実装できます。
class Parent { hasMany = [children:Child] }
class Child { belongsTo = [parent:Parent] }
これで(addToとremoveFromが常に適切に使用されている場合)、parent.childrenを介して親の子を取得できます。
しかし、hasManyなしでもそれを行うことができます:
class Parent { }
class Child { belongsTo = [parent:Parent] }
次に、Child.findAllByParent(parent)を使用してすべての子を取得する必要があります。
私の質問:2番目の方法でも親の子にクエリを実行できる場合にhasManyを使用する必要がある重要な理由はありますか?
parent.childrenを参照する方が簡単な場合もあると思いますが(親と一緒に熱心に取得した場合はおそらく高速になりますか?)、一方で、子が複数ある場合、このリストはかなり長くなる可能性があります。そして、hasManyについて私が気に入らないのは、常にaddToまたはremoveFromに注意するか、親と一緒に新しい子を追加した後にセッションをクリアして、grailsがこれを自動的に行うようにする必要があることです...
子が少ない場合はhasManyを使用し、(パフォーマンス上の理由で)子が多い場合は使用しないという答えはありますか、それともその背後にもっとありますか?