コンテンツにスキップ

Java Data Objects

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。MoreNet (会話 | 投稿記録) による 2010年10月3日 (日) 16:22個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

Java Data ObjectsJDO)とは、Javaオブジェクト永続性に関する仕様である。ドメインモデルの永続的サービスの透過性などもそれに含まれる。JDO の永続的オブジェクトは通常のJavaクラスである。永続性を持たせるために特別なインタフェースを実装する必要もないし、特別なクラスから継承する必要もない。JDO 1.0 は Java Community ProcessJSR 12 として2002年4月30日にリリースされた。JDO 2.0 は JSR 243 として開発され、2006年5月10日にリリースされた。

概要

オブジェクトの永続性は、外部のXMLメタファイルで定義され、その中にはベンダー固有の拡張を含めることも可能である。JDO ベンダーは開発者向けにエンハンサ(enhancers)を提供する。エンハンサはコンパイル済みのJavaクラスファイルを編集し、透過的な永続性が得られるようにする。JDO の仕様ではバイトコードの改良を必須としているわけではないが、JDO を実装する手段としてはこれが一般的である。現在、JDO ベンダーが提供する永続性にはいくつかのオプションがある。例えば、関係データベースへの保存、オブジェクトデータベースへの保存、ファイルへの保存などである。

JDO 強化クラスは異なるベンダーの実装であっても機能する。一度強化(エンハンス)した Java クラスは任意のベンダーの JDO 製品で使うことができる。

JDO は Java EE にいくつかの方法で統合されている。まず、ベンダー実装は Java EE Connector として提供される。そして、JDO は Java EE transaction service(JTA Transaction Manager の実装)のコンテキストで動作する。

JDO と JPA

Enterprise JavaBeans 3.0 (EJB 3.0) では、永続性がカバーされている。それは、EJB v2 の Entity Beans の発展したものである。しかし、EJB 3.0はJDOを採用せずに、Java Persistence API (JPA) 1.0を採用した。EJB 3.0はJDO 2.0のリリースの翌日の2006年5月11日に仕様が制定された。JDOとJPAは対立する仕様である。

JPA は javax.persistence パッケージを使い、EJB 3.0 (JSR 220) の中の独立した文書で定義されている。JPA は EJB コンテナを必要とせず、JDO のように Java SE 環境でも機能する。しかし、JPA はオブジェクト関係マッピング (ORM) の仕様であって、JDO のようにデータストアの種類に関係なく使える、透過的なオブジェクトの永続の仕様ではない。

JPA は Java EE の仕様の一部であるため、JDO よりも多く使われていている。JDO の商用製品やオープンソースのプロジェクトの中には、既に JPA API も実装し選択肢を増やしているものがある。

JDO 2.0 での機能追加

  • Disconnected Object Graphs の概念
  • Standardized ORM Mapping Descriptors (ORMベースのJDO実装向け)
  • JDOQL 拡張
  • Get e.g. a java.sql.Connection from javax.jdo.PersistenceManager
  • その他: Named Queries (pm.newNamedQuery), FetchPlan, Sequence, Delete by Query, multiple User Objects on PM

関連項目

外部リンク

仕様

オープンソース実装

コミュニティなど