BerkeleyDB DPL

DPL (Direct Persistent Layer) : Entity
まず初めに一つのレコードを入れるためのクラスを作る.

これは普通のJavaBeansであるが、以下のようにannotationを使うのがミソ.

PrimaryKeyは重複不可. SecondaryKeyは重複可能. SecondaryKeyは複数指定できる.

primaryKeyをauto_incrementするには以下のように書く. "Sequence_Namespace"はこの系列の名前であり、任意につけてよい.

SecondaryKeyには、ONE_TO_ONE, ONE_TO_MANY, MANY_TO_MANY, MANY_TO_ONEのいずれであるかを指定する.

ONE_TO_ONE, MANY_TO_ONEの時には、スカラー型である必要あり. ONE_TO_MANY, MANY_TO_MANYの時には、配列かCollectionである必要あり.


 * つまりONE_TO_MANYの場合、Entry(object)がONEで、secondary_keyはMANYということになる.
 * 例えば
 * また、MANY_TO_ONEとなると、一つのsecondaryKeyに対して複数のEntry objectを入れることができることになる.

DPL : データをDBに入れる
EntryクラスをSimpleDAにput(entry)すればよい.

もっと平たく言うと、ここではSimpleDAを通じてPrimaryIndexオブジェクトにputしている.

ここでSimpleDAとは以下のもの.

DPL : データの検索 (PrimaryIndex)
SimpleDAからEntryをget(primary_key)する.

平たく言うとここではSimpleDAを通じてPrimaryIndexオブジェクトからEntryをgetしている.

DPL : エントリに順次アクセスする方法
PrimaryIndexオブジェクトからEntityCursorオブジェクト（カーソル）を作る. このカーソルを使って、順次アクセスする.

DPL : キーに重複がある場合のデータ取得
Secondary keyは重複が許される. (MANY_TO_ONE, MANY_TO_MANYを指定)
 * PrimaryIndexオブジェクトを使ってSecondaryIndexオブジェクトを作る.
 * SecondaryIndexオブジェクトを使ってEntityCursorオブジェクト(カーソル）を作る.
 * カーソルをつかって順次アクセスする. 以下の2種類のメソッドを組み合わせて使う.
 * nextDup,prevDup : 現在カーソルが指しているオブジェクトのキーと同じキーをもつ次のオブジェクトを返す. 同じキーのオブジェクトがなければnull
 * nextNoDup, prevNoDup : 違うキーをもつ次のオブジェクトを返す. 無ければnull.

DPL : データの削除
PrimaryIndexまたはSecondaryIndexまたはそれらから作ったカーソルのイテレータのdeleteメソッドを呼び出すことで削除する.

DPL: データの置換
PrimaryIndexを使ってデータを置換.

SecondaryIndexを使ってデータを置換.