PetOwner という名前のエンティティがあります。PetOwner にはペットのリストがあります。各ペットにはストアがあります (つまり、このペットが生まれたストア)。Pet は抽象クラスであり、具体的なバージョンを取得すると多くの結合が行われます ( @Inheritance(strategy = InheritanceType.JOINED)
)。このシグネチャを持つ PetOwner のメソッドが必要です。
Set<Store> getAllStores();
問題は、ペットのリストの読み込みが非常に遅く、実際にはストアのリストを取得する必要がないことです。を呼び出すとgetAllStores
、次のように SQL を実行したいと思います。
SELECT DISTINCT store_id
FROM pet
WHERE petowner_id = x;
しかし、次のように実装すると:
Set<Stores> stores = //
for (pet : pets)
stores.add(pet.getStore());
return stores;
すべてのペットを引き込み、非常に遅くなります。では、どうすればすべてのペットを引き込むのを防ぐことができますか? 理想的には、PetOwner オブジェクトにこのメソッドが必要です。なぜなら、コードはそのようにオブジェクト指向になっていると思うからです。
また、PetOwner 内には他のメソッドがあり、低速ではありますが、ペットのリストをロードする必要があります。しかし、常に呼び出すとは限りません。そのため、このメソッドだけでペット リストの読み込みを回避したいと考えています。