http://www.jdocentral.com/より:

オープンソースのJDO実装系はあるか


Q:JDOCentralには商用のJDO実装系へのリンクがあるけど、オープンソースの実装系はないの?。
A1:ぼくが知っているのは、CastorOJBの二つだけだね。OJBは、Jakartaプロジェクトの一部だよ。ぼくは、このどちらかに関する情報をこの掲示板の上で探してるんだ。MySQLのためのDAOsをいちいち手書きするのは、かったるいからね。

A2:OJBはたぶん使えるね。ただしそのJDO部分は、OJBの機能にJDOのインタフェイスからアクセスできる、というだけのものだよ※。CastorはJSR 12(JDO)の規格に準拠していないんだ。Castorの非準拠性については、JDOCentralに良い記事があるよ。
  〔※:OJBがJDOの完全な実装を提供するのはv.2.0より、と発表されている。〕

A3:Robin Rossが自分のサイトで非商用のJDO実装系に関するページをメンテナンスしているよ。ぼくが知っている、フリーでオープンソースのJDO実装系は、以下の三つだ:

    Jakarta OJB
    Triactive JDO
    XORM

  三つとも、オブジェクト/リレーショナル方式の実装だよ。現時点でJDOの規格への準拠性がいちばん良いのは、TJDOだね。
  ちなみに、ぼくは、XORMのデベロッパなんだ。

A4:今唯一関心があるオープンソースのJDOは、TJDOだ。それを見つけた場所は、ここなんだ。TJDOはソースがきれいだし、ANTを使うプロジェクトのセットアップも良い。ただし、ドキュメンテーションは貧弱。

  ちょっと遊んでみるだけなら、ここのコミュニティエディションがお勧めだ。とても親切なCTOがいるよ。貧乏なデベロッパが一生SQLに縛りつけられないためにも、フリーのJDOをもっと盛り上げるべきだね。

A5:JakarataのOJBも、コードジェネレーションとか、シンプルなトランザクション/ロック管理とか、かなり良いのでは?。実際に使ってみた人の意見を、聞きたいね。

A6:CastorはJDOの規格とは無縁な製品だから、後で苦労しないためには、最初から使わないほうがよいと思うね。

A7:TJDOは良いみたいだけど、オブジェクト/リレーショナルのマッピングをもっと自由に構成(コンフィギュレーション)できる実装系が欲しいね。

A8:エンティティEJBの層に代わるものが至急必要なんだ。その立場から見ると、現状ではCastorの成熟度が高いと思われる。Hibernateは、使っている人が少ないね。JakartaのOJBは、自分たち独自の製品にJDOインタフェイスをくっつけただけじゃないの?。汎用のSQLの実装がしっかりしていて、その上のオブジェクト/リレーショナルのマッピングがすっきり明快、オーバヘッドなし、キャッシングあり、というツールが欲しいんだよ。コンテナのようなものがオブジェクトレベルの同期化(ロック)を提供していて、レコードオブジェクトを更新しようとする複数のセッションを正しく面倒見れたら、もっとすばらしいけどね。

A9:関係データベース用のJDOの実装系はほとんどすべて、上のA8さんが言っている機能を持っているよ。商用製品だが、JDO Genieは、GUI方式のワークベンチ(XMLファイルを手書きしなくてよい)、生成されるSQLを見れるログ、PersistenceManagerによるキャッシング、並行更新を検出するための3種類のロッキング、等の機能を提供している。

A10:Castorは、今では放棄されたプロジェクトだ。採用はお勧めできないよ。OJBのPersistentBrokerと、Hibernateは、共にとても安定していてユーザの評判も良いね。開発もサポートも良いし、ドキュメンテーションも良い。JDOの規格にこだわらないなら、両者はとても価値が高いといえるね。OJBの高級API(ODMGとJDO)は、必要な人にとっては便利だ。私は個人的にOQLが好きなのでODMGで遊んでみた。しかし商用のプロジェクトなら、JDOを使うだろうね。

オブジェクト→リレーショナルとリレーショナル→オブジェクト

Q:オブジェクト/リレーショナル(JDOのオブジェクトをRDB--関係データベース--にマップする)ではなくて、リレーショナル/オブジェクト方式(RDBの既存のリレーションをJDOのオブジェクトにマップする)の実装はないの?。

A1:TJDOは、オブジェクト/リレーショナルのみだね。XORMは、既存のDBのスキーマに対応できる、という設計になっている。ただし現状では、そのためのコード生成機能がないんだ。最初から、要望は多いけどね。

A2: GUI方式で、既存のデータベースのテーブルをJDOのクラスにしてくれるFrontierSuite for JDOというものがあるよ。

A3:RDBのベンダの中には、スキーマからJavaのオブジェクトを生成するツールを提供しているところもあるようだよ。

A4:DBのスキーマを記述するメタデータ(XMLファイル)のディレクティブの標準化については、今JDOエキスパートグループが取り組んでいるんだ。だからそれは、JDOの規格の将来のバージョンには載るだろうね。しかしそれがなくても、Javaのオブジェクトを使えるというJDOのメリットと魅力はきわめて大きいね。XMLを書くのが少々面倒でも、我慢できるよ。