おそらく、Java EE 6仕様のリリースに伴う最大数の変更がJPA(Java Persistence API)で導入されました。 これから始まる一連の記事で、各イノベーションについて詳しく説明する予定です。
はじめに
JPAテクノロジーはJDBCを抽象化したものであり、SQLから独立させることができます。 すべてのJPAクラスとインターフェースは
javax.persistence
パッケージにあります。テクノロジーの主なコンポーネントは次のとおりです。
- ORM(オブジェクトリレーショナルマッピングメカニズム);
- エンティティマネージャAPI-基本的なCRUD操作を実行できます。
- JPQLおよび基準API-データ抽出メカニズム。
- トランザクションおよびロック管理(JTAを使用する場合と使用しない場合の両方);
- コールバックとリスナーのメカニズム。
JPA 2.0では、変更は次の影響を受けました。
- マップのサポートが改善されました。キーと値の両方が単純なタイプ、エンティティ、または埋め込みオブジェクト(埋め込み)になりました。
- 組み込みオブジェクトと単純型(整数など)のコレクションを個別のテーブルに配置できるようになりました。 以前は、エンティティのコレクションのみを別々のテーブルに作成することが可能でした。
@OrderColumn
アノテーションを使用して、永続オブジェクトの順序を制御できるようになりました。- 孤立した削除オブジェクトを削除できるようになりました。親オブジェクトが削除されると、子も削除されます。
- 悲観的ブロッキングのサポートが登場しました(JPA 1.0以降は楽観的がサポートされています)。
- 新しいクエリ定義API。これにより、クエリをJPQL文字列で記述するのではなく、OOPスタイルのクエリを作成できます。
- JPQL(JPAのクエリ言語)の可能性は大幅に拡大しました。
- 埋め込みオブジェクトは、他の埋め込みオブジェクトの一部になり、エンティティとの関係に参加できるようになりました。 ポイントを使用したオブジェクトのグラフ上のナビゲーションは、組み込みオブジェクトで使用できるように拡張されました。
- 新しいキャッシュAPIのサポートが追加されました。
現時点では、JPA 2.0の唯一のプロバイダーは
EclipseLinkであり 、JPA 2.0のリファレンス実装でもあります。 私はこれを数ヶ月使用しており、このプロジェクトは非常に安定していると言う準備ができています。
次の記事では、ORMの宣言における革新について説明します。
Java EE 6. JPA 2.0の概要、パート2:コレクション