Java Persistence API

Java Persistence API (JPA) とは



Java Persistence API (JPA) は、Java SE および Jakarta EE (旧 Java EE) 環境で、関係データベースのデータを扱うアプリケーション開発を効率化するためのJavaフレームワークです。JPAは、オブジェクトとデータベースの間のデータ永続性を実現するための標準仕様を提供します。これにより、開発者はデータベース操作の複雑さを抽象化し、ビジネスロジックに集中できるようになります。

JPAの構成要素



JPAは主に以下の3つの要素で構成されています。

1. API (javax.persistence パッケージ): データ永続性に関する基本的な機能を提供するJavaインターフェースとクラス群です。
2. Java Persistence Query Language (JPQL): データベースに格納されたエンティティに対するクエリを行うための言語です。SQLに似ていますが、データベースの表ではなくエンティティオブジェクトを操作します。
3. オブジェクト/関係メタデータ: エンティティとデータベースの表との間のマッピングを定義する情報です。アノテーションまたはXMLファイルで指定できます。

JPAのリファレンス実装としては、EclipseLinkが広く利用されています。

JPAの歴史



  • - JPA 1.0: 2006年5月11日、JSR 220 (EJB 3.0) の一部として策定されました。
  • - JPA 2.0: 2009年12月10日、JSR 317としてJava EE 6およびEJB 3.1と共に承認されました。
  • - JPA 2.1: 2013年4月22日、JSR 338として承認されました。

これらのバージョンアップにより、JPAはより強力で柔軟な永続性フレームワークへと進化しました。

エンティティ



JPAにおけるエンティティとは、関係データベースの表に対応するJavaクラスです。エンティティの各インスタンスは、表の1つの行を表します。エンティティは他のエンティティとの関係を持つことができ、これらの関係はオブジェクト/関係メタデータによって定義されます。メタデータは、アノテーションまたはXMLファイルで設定可能です。

Java Persistence Query Language (JPQL)



JPQLは、データベース内のエンティティを操作するためのクエリ言語です。SQLに似た構文を持ちますが、データベースの表を直接操作するのではなく、エンティティオブジェクトを対象とします。これにより、開発者はよりオブジェクト指向的なアプローチでデータ操作を行うことができます。

Enterprise JavaBeans (EJB) との関係



JPA 1.0はEJB 3.0仕様の一部として導入されましたが、JPAを利用するためにEJBコンテナやJava EEアプリケーションサーバーが必須ではありません。JPA 2.0以降はEJB 3.1とは独立した仕様として定義されており、より柔軟な利用が可能になっています。

Service Data Object (SDO) API との関係



JPAは、HibernateやTopLinkのようなオブジェクト関係マッピングツール(ORM)の主要機能であるデータ永続性を実現するために設計されました。一方、Service Data Objects (SDO) APIは、サービス指向アーキテクチャをサポートするために設計されており、JPAとは異なる目的を持ちます。SDO APIは、関係データモデルだけでなく、様々なデータ形式やプログラミング言語を扱うことができます。JPAとSDO APIは、それぞれ異なる目的に特化しており、相互に補完し合う関係にあります。

開発の背景



EJB 2.0までのEntity Beanは、複雑で重く、Java EEアプリケーションサーバーでのみ利用可能でした。このため、Data Access Objectやオープンソースのフレームワークを使った軽量な永続性オブジェクトが多用されました。JPAは、このようなサードパーティの永続性フレームワークの機能を統合し、標準化することを目的に開発されました。HibernateやTopLinkなどのプロジェクトも、現在ではJPAを実装しています。

まとめ



JPAは、Javaアプリケーションにおけるデータ永続性のための重要な標準仕様です。これにより、開発者はオブジェクトとデータベースの間のギャップを意識することなく、効率的にアプリケーション開発を進めることができます。エンティティ、JPQL、メタデータなどの要素を理解し、適切に活用することで、より質の高いソフトウェア開発が実現できます。

関連項目



仕様



Java Data Objects

実装



DataNucleus
GlassFish
Hibernate

外部リンク



一般情報


Sun's Persistence page
GlassFish's Persistence page
The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 317
Documentation for the final version of the EJB3 spec (called JSR220)
Nabble JPA Forum

ドキュメンテーション


Persistence in the Java EE 5 Tutorial
Sun's Persistence FAQ
Java Persistence API Javadoc
Getting started with Java Persistence API 1.0

実装


Amber - Resinの一部
Apache OpenJPA
DataNucleus
GlassFish
Hibernate
Oracle
EclipseLink
Oracle TopLink
Oracle Kodo
SAP Netweaver Application Server
SimpleJPA - Amazon SimpleDB

記事


Master the New Persistence Paradigm with JPA
Persistence Pays Offs: Advanced Mapping with JPA

もう一度検索

【記事の利用について】

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

【リンクついて】

リンクフリーです。