Java Persistence API(JPA)は、EJB 2.1のEntity Beanの仕様をEJB3.0から独立した1つの仕様にまとめられものです。JPAは、リレーショナルデータベース(RDB)をJavaのアプリケーションから操作するために、オブジェクト/リレーション(O/R)マッピングの仕組みを提供します。O/Rマッピングは、Javaの永続性クラスとRDBのテーブルをマッピングすることで、データの永続化を容易に行えるようにしたものです。JPAはデータベースをJavaのオブジェクトとして扱えるため、データベースにSQL文を発行する場面を少なくすることができます。
以下に、JPAを理解するうえで必要な用語について簡単に説明します。
永続性ユニット
persistence.xmlで定義される永続化するための論理的な集合です。複数の永続性クラス(エンティティクラスなど)やO/Rマッピングファイルによって定義されます。
Entity
Entityは、データベースのテーブルと対応付けられるJavaクラスです。このインスタンスがデータベースの1レコードに相当します。
永続性コンテキスト
エンティティクラスのインスタンスの集合です。JPAでは永続性コンテキストに対して操作を行い、トランザクションの区切りでデータベースと同期がとられます。
Java Persistence Query Language(JPQL)
データベースのSQLにあたる問い合わせ言語です。
persistence.xml
エンティティクラス、O/Rマッピングファイル、トランザクションのタイプなどの構成情報を永続性ユニットに定義できます。
orm.xml
O/Rマッピングファイルです。O/RマッピングファイルはEntityとデータベースとの対応付けを記述します。アノテーションでも記述することができるため必須ではありません。
Java EE 7に含まれるJPAの仕様はJPA 2.1です。
ポイント
JPA 2.1の詳細情報については、以下の規約を参照してください。
JSR 338: Java Persistence 2.1