web-dev-qa-db-ja.com

ドメインオブジェクトモデル:IDとオブジェクトによるクエリ

ProductBrandの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番目の記述方法でメソッドのテストがより簡単になると思います。

4
Yoga

findByBrandメソッドを単体テストする場合、Brandオブジェクトを渡すことも、IDを渡すことも実際には違いはありません。

この違いは、findByBrandを呼び出すコードにより関連性があります。
ほとんどの場合、そのコードはすでにBrandオブジェクトを処理しているはずなので、findByBrandに引数として渡すことは最も理にかなっています。

findByBrandがプレーンIDを受け入れる唯一の理由は、(ほぼ)all現在および予想される発信者が対応するBrandを持たずにブランドIDをすでに自然に操作している場合です。オブジェクト。