私はファーマークラスを持っていて、ファーマーはブタのコレクションを持っているとしましょう。コレクションを含むORMクラス。子供よりも親クラスに焦点を当てようとしている
私はHibernateのようなORMを使用している場合は、私は私のコントローラからこのような何かを行うことができますよう、ファーマーズ豚のコレクションへの更新をカスケード接続することができます
Pig pig = new Pig("Charlie");
farmer.addPig(pig);
farmerService.save(farmer);
マイ農家のサービスはについては何も知りません豚。アプリケーションの要件に応じて、私は豚DAOがまったく必要ないかもしれません。私は農民にしか関心がありません。
涼しいですが、豚がベーコンに変わるとどうなりますか?
farmer.removePig(pig);
farmerService.save(farmer);
ここでの問題は、ステートレスなWebアプリケーションで私はファーマーズremovePigメソッドに渡すつもりだ豚を作成するためのいくつかの方法が必要だということです。
私が行うことができます:
// manual search Farmer's collection - requires loading all pigs.
// Yes, I could just pass id to removePig, but it confuses the example
pig = farmer.getPigById(id);
farmer.removePig(pig);
farmerService.save(farmer);
または
// loads up a pig, and hopefully it belongs to the farmer
pig = farmerService.getPigById(id);
farmer.removePig(pig);
farmerService.save(farmer);
後者が良さそうですが、私は私のfarmerServiceにgetPigById()メソッドを追加するつもりならば、私もかもしれないだけsavePig()メソッドがあります。これは農業者から豚への焦点を変えるだろう。
pig = farmerService.getPigById(id);
farmerService.removePig(pig);
ああ、さらにコードが小さくて見てください。しかし、それは個々のブタではなく、ファーマーとそのブタのコレクションで作業したいという論理的な見解に違反しています。私はもはや農業従事者から豚を明示的に取り除くことはしていないが、それはすべて暗黙的かつ逆方向である。
私は多くのこの問題に遭遇しているようです。注目すべきクラスはファーマーです。豚は二次的です。しかし、ブタの集まりと一緒に働くのは難しいです。スロープを下げずに、個々のブタで働くことができます。ブタが持続性からリロードされたときにその変化が反映されます。
この点について私にどのようなアドバイスを提供できますか?
これは私にとって大きな意味を持っています。ありがとう! – Boden