Java Persistence API
Java Persistence API(JPA)とは、関係データベースのデータを扱う Java SE および Java EE のアプリケーションを開発するためのJava用フレームワークである。
Java Persistence API は、JSR 220 Expert Group の作業の一部として策定された。
JPA は、以下の3つの部分から成る。
- API(javax.persistence パッケージで定義されている)
- Java Persistence Query Language
- オブジェクト/関係メタデータ
エンティティ
JPAにおける永続性エンティティは、関係データベースにおける表を表した軽量Javaクラスである。そのインスタンスは表の個別の行に対応する。通常、他のエンティティとの関係を持ち、その関係はオブジェクト/関係メタデータで表される。オブジェクト/関係メタデータは、アノテーションを使ってエンティティクラスのソースファイルに直接記述することもできるし、別のXMLファイルとして記述することもできる。
Java Persistence Query Language
Java Persistence Query Language (JPQL) は、関係データベースに格納されたエンティティに対するクエリに使用される。文法的にはSQLに似ているが、データベースの表を直接操作するのではなく、エンティティオブジェクトを操作する。
Java Persistence API と Enterprise JavaBeans の関係
Java Persistence API は EJB 3.0 仕様の一部であり、EJB 3.0 は Java EE 5 プラットフォームの一部である。ただし、永続性を利用したアプリケーションを実行するのに EJB コンテナや Java EE アプリケーションサーバが必須というわけではない。Java Persistence API は将来的には EJB とは分離され、独立したJSR仕様として定義される予定である。
Java Persistence API と Service Data Object API の関係
Java Persistence API は、Hibernate や TopLink などのオブジェクト関係マッピングツールの主要機能である関係永続性のために設計された。一般に Java Persistence API は EJB 2.0 仕様を大幅に強化したものと受け取られている。Service Data Objects (SDO) API (JSR 235) は Java Persistence API とは目的が異なり、相互に補完するものとされている。SDO API はサービス指向アーキテクチャのために設計されており、関係データモデルだけでなく様々なデータ形式や各種プログラミング言語を扱う。SDO API のJavaバージョンはJCPによって管理され、C++バージョンはOASISが管理する。
Java Persistence API 開発の背景
エンティティ・ビーンなどのエンタープライズ・ビーンは、重すぎて複雑すぎ、Java EE アプリケーションサーバでしか使えないという問題があった。このため、その代替として Data Access Object やオープンソースのフレームワークを使った軽量の永続性オブジェクトが使われることが多くなった。そのようなサードパーティの永続性フレームワークの機能を集約したのが Java Persistence API であり、Hibernate や TopLink のようなプロジェクトも現在では Java Persistence API を実装している。
外部リンク
- 一般的情報
- ドキュメンテーション
- 実装
- 記事