Product
とBrand
の2つの単純なモデルクラスがあるとします。
このようなProduct
クラスにクエリメソッドがあることは明らかです
Product product = Product.findById(123);
ブランド別に製品を照会したい場合はどうすればよいですか?
ArrayList<Product> products = Product.findByBrand(234);
// or
ArrayList<Product> products = Product.findByBrand(new Brand("ABC", 234));
234がデータベースのブランドIDであると想定します。
単体テストでBrand
クラスをモックできるので、2番目の記述方法でメソッドのテストがより簡単になると思います。
findByBrand
メソッドを単体テストする場合、Brand
オブジェクトを渡すことも、IDを渡すことも実際には違いはありません。
この違いは、findByBrand
を呼び出すコードにより関連性があります。
ほとんどの場合、そのコードはすでにBrand
オブジェクトを処理しているはずなので、findByBrand
に引数として渡すことは最も理にかなっています。
findByBrand
がプレーンIDを受け入れる唯一の理由は、(ほぼ)all現在および予想される発信者が対応するBrand
を持たずにブランドIDをすでに自然に操作している場合です。オブジェクト。