DAOで使うカスタム属性(アノテーション)

途中、何度も「S2.DAOを使えばいいじゃない」という誘惑が入るがめげずに実装中。今まで独自で書いてきただけに、一箇所だけS2ファミリを使う訳にはいかないのだ。(ちょっとだけ後悔している)

[Entity] - エンティティを宣言
[Column] - DBの列(カラム)を宣言
[PrimaryKey] - データを一意に識別するキーを宣言
[BelongsTo] - 1:1のリレーションを宣言
[HasMany] - 1:Nのリレーションを宣言
[SQL] - 任意のSQLを宣言

いろいろ悩んだが、これらに決定することにした。(その割りにはどこぞで見たことのあるものばかりだが)
リレーションに関しての実装はきりが無いので、一度の結合クエリで得られる結果セットから関連エンティティを生成する機能だけで割り切ることとし、更新は一切考慮しないことにする。

最初は抽象クラスを定義するだけで、ADO.NET用のDAOクラス一つだけで済むだろうと思っていたのだがさすがにそれは無理そうだ。少なくともDAOの他に、SQLを構築する機能とDB(トランザクション)の差異を吸収する機能の実装は必要になるだろう。

もう、寝よう。