永続化の管理と O/R マッピングのための Java EE および Java SE における標準 API である。 略称は 「JPA」。
JPA 仕様は Java Community Process により策定されている。
JPA 2.1 仕様に基づき説明する。
エンティティ (entity) は、軽量で永続化可能なドメインオブジェクトのことである。 プログラミングの構成要素として主要なものはエンティティクラスである。 エンティティクラスは、ヘルパークラスや実体の状態を表わすための補助的なクラスを利用することもある。
エンティティクラス (entity class) は、Entity
アノテーションが付けられたクラスか、XML 記述子 (XML descriptor) においてエンティティとして記述されたクラスである。 エンティティクラスは、次の条件を満たす必要がある。
public
か protected
で、引数をとらないコンストラクタを持っていなければならない。 他のコンストラクタは持っていても持っていなくても良い。final
であってはならず、また、どのメソッドも、どの永続性インスタンス変数 (persistent instance variable) も final
であってはならない。Serializable
インターフェイスを実装していなければならない。永続コンテキスト (persistence context) は、エンティティオブジェクト (entity instance) の集合である。 永続コンテキストに含まれるエンティティオブジェクトは、それぞれ識別子によって一意に特定できるようになっている。
エンティティオブジェクトとそのライフサイクルは、永続コンテキストの中で管理される。
EntityManager
オブジェクトは永続コンテキストと結び付いている。 永続コンテキストとやりとりするためのメソッドが EntityManager
インターフェイスに定義されている。 EntityManager
API は、永続性エンティティ (persistent entity instance) を作成したり削除したり、主キーによって永続性エンティティを見つけたり、永続性エンティティを探すための問い合わせを行ったりするのに使用される。
指定の EntityManager
オブジェクトによって管理されうるエンティティの集合は、永続性ユニット (persistence unit; 持続性ユニットとも訳される) によって定義される。