【特集】

Java Persistence API + H2徹底解説 - EJBじゃなくてもDBへ永続化

1 Java Persistence APIとは

    杉山貴章  [2006/11/30]

    Java Persistence APIとは

    Java Persistence API(以下、JPA)は、JSR 220で仕様が標準化されているEJB 3.0(Enterprise JavaBeans, Version 3.0)の一部として新たに導入された、Javaオブジェクトの永続化のためのAPIである。EJB 3.0以前は、永続化に関する主要なAPIとしてJDO(Java Data Object)とEJB Entity Beanの2種類があった。しかしこの両者の間には互換性がないため混乱の元となっていた。このJDOとEntity Beanの整合性を取るために新たに設計されたのがJPAで、機能的には従来のEntity Beanに相当するPOJOベースのAPIとなっている。

    JPAはEJB 3.0と同様にJSR 220においてその仕様が定められているが、APIとしてはEJBからは独立しているため単体で使用することも可能である。そこで本稿では、EJBの実装を持たないJava SEプラットフォームにおいて、JPAを利用してJavaオブジェクトの永続化を行う方法を解説する。

    なお、EJB 3.0の仕様はここで公開されている。

    従来のJava SEでも、JDBCを使用したプログラミングによってJavaオブジェクトの持つデータを外部のデータベースへ格納することができた。しかしこの方法ではJavaオブジェクトとデータベースのテーブルとの関連付けを自身で定義しなければならず、プログラムが繁雑になるという問題があった。その点、JPAを使用すれば、データベースを直接意識せずにJavaオブジェクトのデータを格納しておくことができる。さらにJPAではアノテーションを利用してデータベーステーブルとのマッピングやデータベース上のリレーションシップをシンプルなコードで記述することができる。

    たとえば、永続化可能なJavaオブジェクトである「エンティティ」は@Entityアノテーションで表現する。エンティティには@Idアノテーションによって固有の番号を振ることができる。またリレーションシップを表現するアノテーションとして@OneToOne、@OneToMany、@ManyToOne、@ManyToManyなどが用意されている。

    エンティティの管理は「エンティティマネージャ」によって行われる。エンティティマネージャはJPAによって用意され、エンティティの取得や永続化など、データベースや永続かコンテキストとの仲介となるAPIを提供する。「永続化コンテキスト」とはメモリー上のエンティティの集合を指す。

    エンティティマネージャによって管理されるエンティティクラスやエンティティによって使用されるデータソースは、「永続化ユニット」によってコンテナに伝えられる。永続化ユニットはXML形式の設定ファイルによって定義される。

    その他、JPAではデータアクセス時のトランザクション管理を行うエンティティ・トランザクションなどのAPIも提供されている。これによってトランザクションのコミットやロールバックなどが管理される。

    本稿ではNetBeans環境上でJPAを利用したアプリケーションを作成する方法を、JPAの主要な実装であるTopLink EssentialsおよびHibernate EntityManagerについてそれぞれ解説する。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン