: O. Yuanying

JPAをスタンドアローンなJava5アプリケーションで使う方法

Java Persistence API (JPA)をスタンドアローンなJava5アプリケーションから使ってみる。JPA実装にはHibernateを利用する。

インストール

HibernateのウェブページからHibernate Core、Hibernate-annotations、Hibernate-entitymanagerをダウンロードし、依存ライブラリと共にダウンロードしたjarにクラスパスを通す。

Persistence unitの定義

最初にPersistence unitを定義する。一つのPersistence unitは一つのデータベース(データソース?)に対応するようだ。

以下のxmlを作成し、persistence.xmlと言う名前でクラスパスの通ったフォルダの下のMETA-INFフォルダに保存する。

<persistence>
   <persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
      <class>org.hibernate.ejb.test.Cat</class>
      <class>org.hibernate.ejb.test.Distributor</class>
      <class>org.hibernate.ejb.test.Item</class>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.HSQL
Dialect"/>
         <property name="hibernate.connection.driver_class" value="org.hsqldb
.jdbcDriver"/>
         <property name="hibernate.connection.username" value="sa"/>
         <property name="hibernate.connection.password" value=""/>
         <property name="hibernate.connection.url" value="jdbc:hsqldb:."/>
         <property name="hibernate.max_fetch_depth" value="3"/>
      </properties>
   <persistence-unit>
</persistence>

この例では「jdbc:hsqldb:.」というURLのデータベースを利用する「manager1」と言う名前のpersistence unitを定義している。

classタグ内に永続化クラスを指定する。その他hibernateの設定ファイル(*.hbm.xml)を登録する方法もあるようだ。

propertyタグ内はもうそのまんまhibernateの設定。

永続化クラスの定義

アノテーションを使って永続化クラスを定義してやる。

使ってみる

先ほど「manager1」と言う名前のpersistence unitを定義したので、そこに永続化オブジェクトを永続化してみる。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
        
Item item = new Item();
item.setProductName("Ahhhh!!!");
item.setQuantity(30);
em.persist(item);
        
tx.commit();
        
em.close();

emf.close();

めちゃ簡単。