CB - PrimaryKeyAbstraction
概要
ConditionBeanには、複合主キーのデメリットを最小限抑えるために、PKの抽象実装(PKの抽象化)ができるようなメソッドが用意されています。
PKの等値条件
PKによる等値条件のメソッドです。
e.g. PKを抽象的に扱って一件検索 @Java
FooCB cb = new FooCB();
cb.acceptPrimaryKey("firstPK", 2, "thirdPK", 44);
// ※以下と同義
// cb.query().setFirstPk_equal("firstPK");
// cb.query().setSecondPk_equal(2);
// cb.query().setThirdPk_equal("thirdPK");
// cb.query().setFourthPk_equal(44);
メソッドの補完で複合PKの構成要素に対応する引数が並びますので、条件落ちは比較的抑えやすいでしょう。 また、構成要素に追加があった場合、このメソッド呼び出しはコンパイルエラーになるので、影響範囲を特定することができ、修正漏れを防げます。
抽象実装上でのPKの等値条件
似たようなメソッドで、acceptPrimaryKeyMap() というものもあります。 こちらは、インターフェースディスパッチが可能なもので、(テーブルを抽象化した)抽象実装上でもPKの等値条件が利用しやすいようになっています。
PKで並べる
PKによるソート条件のメソッドです。
e.g. PKを抽象的に扱って一件検索 @Java
FooCB cb = new FooCB();
cb.addOrderBy_PK_Asc();
// ※以下と同義
// cb.query().addOrderBy_FirstPk_Asc();
// cb.query().addOrderBy_SecondPk_Asc();
// cb.query().addOrderBy_ThirdPk_Asc();
// cb.query().addOrderBy_FourthPk_Asc();
他のクラスでのPK抽象化
Behavior や Entity でも同じくPKを抽象化するメソッドが用意されています。
- Entity.hasPrimaryKeyValue()
- Behavior.selectByPKValue(pk)
- Behavior.selectByPKValueWithDeletedCheck(pk)