Java Data Objects

Java Data Objects (JDO) について



Java Data Objects (JDO) は、Javaオブジェクトの永続性、つまりオブジェクトのデータを永続的に保存し、後で取り出すための仕様です。JDOの大きな特徴は、ドメインモデルの永続性サービスを透過的に扱える点にあります。これは、通常のJavaクラスを特別な変更なしに永続化できることを意味します。

JDOの基本



  • - 透過的な永続性: JDOでは、Javaクラスが永続的であるために、特定のインターフェースを実装したり、特別なクラスを継承したりする必要はありません。これにより、開発者はビジネスロジックに集中でき、永続化の複雑さを意識せずに済みます。
  • - 永続性の定義: オブジェクトの永続性に関する設定は、外部のXMLメタファイルで定義されます。これにより、永続化の設定をJavaコードから分離し、柔軟な設定が可能になります。メタファイルには、ベンダー固有の拡張を含めることもできます。
  • - エンハンサ: JDOベンダーは、開発者向けにエンハンサと呼ばれるツールを提供します。エンハンサは、コンパイル済みのJavaクラスファイルを編集し、透過的な永続性が実現できるようにします。これは、バイトコードを修正することで実現されるのが一般的です。
  • - 多様なデータストア: JDOは、関係データベースオブジェクトデータベース、ファイルなど、さまざまなデータストアへの保存をサポートしています。これにより、アプリケーションの要件に応じて適切なデータストアを選択できます。
  • - ベンダー間の互換性: JDOで強化されたJavaクラスは、異なるベンダーの実装間でも機能します。これは、一度強化したクラスを別のJDO製品でも利用できることを意味し、柔軟性が高まります。

JDOとJakarta EE



JDOはJakarta EE(旧Java EE)環境にも統合されています。ベンダー実装はJakarta EE Connectorとして提供され、Jakarta EE transaction service(JTA Transaction Manager)のコンテキストで動作します。これにより、エンタープライズ環境での利用も容易になっています。

JDOとJPA



Enterprise JavaBeans 3.0 (EJB 3.0) では永続性がカバーされていますが、JDOではなくJava Persistence API (JPA) 1.0が採用されました。JDOとJPAは、Javaでの永続性を扱うための対立する仕様として存在します。JPAはjavax.persistenceパッケージを利用し、EJB 3.0の一部として定義されています。

  • - JPAの特徴: JPAはEJBコンテナを必須とせず、JDOと同様にJava SE環境でも利用できます。ただし、JPAは主にオブジェクト関係マッピング(ORM)の仕様であり、データストアに依存しない透過的なオブジェクト永続化を提供するJDOとは異なります。
  • - 普及の違い: JPAはJakarta EEの一部であるため、JDOよりも広く利用されています。JDOの商用製品やオープンソースプロジェクトの中には、JPA APIも実装し、利用者に選択肢を提供しているものもあります。

JDO 2.0 での機能追加



JDO 2.0では、以下の様な機能が追加されました。

  • - Disconnected Object Graphs: オブジェクトグラフを永続化せずに扱う機能が追加されました。
  • - Standardized ORM Mapping Descriptors: ORMベースのJDO実装向けの標準化されたORMマッピング記述子が追加されました。
  • - JDOQL拡張: JDO Query Language (JDOQL) が拡張され、より柔軟なクエリが可能になりました。
  • - データベース接続の取得: javax.jdo.PersistenceManagerからjava.sql.Connectionを取得できるようになりました。
  • - その他の機能: 名前付きクエリ、フェッチプラン、シーケンス、クエリによる削除、PersistenceManager上の複数のユーザーオブジェクトなどが追加されました。

JDOの関連技術と実装




まとめ



JDOは、Javaオブジェクトの永続性を透過的に扱うための強力な仕様です。データストアの種類に依存せず、様々な環境で利用できる柔軟性を持っています。JPAと並び、Javaでのデータ永続化の選択肢として重要な位置を占めています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。