This is a cache of http://dbflute.seasar.org/ja/manual/function/ormapper/conditionbean/various/primarykeyabstraction.html. It is a snapshot of the page at 2024-11-01T00:30:22.556+0000.
CB - PrimaryKeyAbstraction | DBFlute

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)