POJO と AJO

で、最近気になっている議論がこれ。

とりあえず、いま持っている知識と経験で考えたところを整理しておくと。

  1. 「仕様」「実装」「設定」の3つに整理して考えてみたらどうだろうか。
  2. それをコードで書くか、Annotation で書くか、設定ファイルに書くかはどれでもOK。一番楽なスタイルで書けば良い。
  3. 「仕様」に「実装」や「設定」の情報を入れるのはNG。逆に「実装」や「設定」から「仕様」生成するようなこともNG。*1
  4. そういう意味で、単に POJO と AJO (Annotated Java Object) という分け方はあまり意味がないかも。

...というのが一応のスタンスだけど、どこまでが「仕様」で、どこからが「実装」「設定」なのかは実は難しいかもしれませんね。
エンティティクラスにテーブルの情報を入れるのはイヤだと言っておきながら、テーブル定義書からエンティティクラス作ったりしてるし。(^^;)

*1:だから僕もアンチ XDoclet