JPAって何?

JPAは、リレーショナルデータベースを使う時用のJavaフレームワークの仕様の定義です。

http://terasolunaorg.github.io/guideline/5.5.1.RELEASE/ja/_images/dataaccess_jpa_mapping.png
6.3. データベースアクセス(JPA編) — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.5.1.RELEASE documentation

Java EEだけではなくJava SEでも使えます。

JPAJava EEの「Enterprise Application Technologies」に含まれる技術仕様ですが、Servlet/JSPEJBなどと異なり、コンテナ・ベースのアーキテクチャを採用していないためJava SEでも利用可能です。
JPAの基礎1 - Qiita

データベースとJavaを関連付けてくれます。

https://builder.japan.zdnet.com/storage/2015/07/07/8ffc3bda4c104f848f0979154e31cfd1/image5.png
初めてのJPA--シンプルで使いやすい、Java EEのデータ永続化機能の基本を学ぶ - builder by ZDNet Japan

JPAは以下3つの要素から構成されています。

Entityクラスは、データベースにあるテーブルを表すJavaのクラスです。

データベースにある1つのテーブルの1レコードを表すクラスです。
このクラスのインスタンス
データを格納してテーブルを更新したり、
テーブルから取得したデータを格納して使います。

永続性コンテキストは、Entityクラスのインスタンスを集めたものです。

この永続性コンテキストとJPQL*1を使用してデータベースへの問合せを行います。

EntityManagerは、Entityのライフサイクルを管理するためのAPIを提供するインタフェースです。

https://builder.japan.zdnet.com/storage/2015/07/07/13f730bf2cc2d33fca20efa3b6979098/image6.png
初めてのJPA--シンプルで使いやすい、Java EEのデータ永続化機能の基本を学ぶ - builder by ZDNet Japan

JPAの実装

EclipseLink
Hibernate ORM : JPAの仕様作成にHibernateプロジェクトの創始者がいたため、JPAHibernateの影響を受け継いでいます。
Apache Open JPA

*1:Java Persistence Query Language : SQLに似た問合せ言語