O/RマッパーActiveObjects

僕はO/Rマッパーについていくつも調べたことがありません。が、一時期Hibernateを使ってみようとしたことがあります。2年くらい前に「Hibernate in Action」が出て、それを元に使ってみようと頑張ってみましたが、モノの2週間くらいで挫折しました。
当時は3系が出たての頃です。2系の補助ツールは充実していたのですが、3系の補助ツールは微妙にあったくらいで、Hibernate-anotationも出たてでした。なので直でXMLをゴリゴリ書き直さないといけません。これがどうにも面倒くさい。

名前を忘れてしまいましたが、ER図を書くと関連を定義したXMLを吐いてくれる
Hibernateの補助ツールがありました。永続化したいモデルを修正するためにER図を書き直さないといけないのは遠回りで面倒くさかったんです。どちらかと言えば、モデルを書いておくと、それを元にER図として見えるようになってくれるとうれしかったんですが、そういう都合のいいツールを見つけられませんでした。

Hibernateも出始めた頃はEJBに対するアンチテーゼとして登場してきましたがHibernateも既に充分過ぎるくらい重厚なフレームワークになってしまいましたね。フットプリントが2MBってデカいですよ…。

ということで、ここ最近薄いO/Rマッパーが欲しくなり、探してみました。
見つかったのがActiveObjects。Active Recodesみたいなモノを目指してるらしいです。これはいいですよ。こんなことができます。

  • 永続化したいモデルのインターフェースを切るとそのインターフェースを元にDBのスキーマを作ってくれる/マイグレートしてくれる
  • エンティティをsave()したときにDBの値が更新されます。(宣言的トランザクションみたいなものはないようです。また、COMMITのタイミングもフレームワーク内で特に規程されていません)

使ってみようと思っている対象が組込みDBなのでこれくらい小さなもので充分なのです。DBのスキーマを作成するDDLも意識しないでいいのは楽ちんす。

5/6 追記
DBの値が更新されているとメモリ上の値もきちんと反映されんのねん。つーか、毎回問い合わせる感があるけどいいか。