EclipseLinkのセットアップ手順(JavaSE)

EclipseLinkをJavaSEで使用する手順です。DBにはApache Derbyを使用して、エンティティを永続化するところまでを説明します。なお、JPAApache Derbyについての説明はしません。

Apache Derbyのダウンロード、セットアップ

Apache Derbyからファイルをダウンロードして、適当なフォルダに展開します。Apache Derbyのセットアップはこれだけです。簡単。

データベース、テーブルの作成

%DERBY%/bin/startNetworkServer.batを実行して、Apache Derbyを起動します。

%DERBY%/bin/ij.batを実行します。connectコマンドを使用して、データベースを作成 & 接続します。

connect 'jdbc:derby://localhost:1527/foo;create=true';

create table文を実行して、テーブルを作成します。

create table foo (
    id integer primary key,
    name varchar(100) not null
);

EclipseLinkのダウンロード、セットアップ

EclipseLinkからファイル(EclipseLink 2.0.0 Installer Zip)をダウンロードして、適当なフォルダに展開します。

次のファイルをクラスパスに追加します。

  • %ECLIPSELINK%/jlib/eclipselink.jar
  • %ECLIPSELINK%/jlib/jpa/eclipselink-jpa-modelgen_2.0.0.v20091127-r5931.jar
  • %ECLIPSELINK%/jlib/jpa/javax.persistence_1.0.0.jar
  • %ECLIPSELINK%/jlib/jpa/javax.persistence_2.0.0.v200911271158.jar

ついでに、Apache Derbyのjarファイルもクラスパスに追加します。

  • %DERBY%/lib/derbyclient.jar

persistence.xmlを作成

クラスパスの通っているフォルダにMETA-INFフォルダを作成して、そこにpersistence.xmlファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
    version="1.0">

    <persistence-unit name="my-app" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/foo" />
            <property name="javax.persistence.jdbc.user" value="APP" />
            <property name="javax.persistence.jdbc.password" value="APP" />
        </properties>
    </persistence-unit>
</persistence>

エンティティを作成

エンティティのクラスを作成します。

package foo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "foo")
public class FooEntity {

    @Id
    private int id;

    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

とりあえずエンティティをCreate

main()を次のように作成します。

EntityManager em = Persistence.createEntityManagerFactory("my-app").createEntityManager();
try {
    em.getTransaction().begin();

    FooEntity foo = new FooEntity();
    foo.setId(1);
    foo.setName("foo");

    em.persist(foo);

    em.getTransaction().commit();
} finally {
    if (em.getTransaction().isActive()) {
        em.getTransaction().rollback();
    }

    em.close();
}

実行して、正常終了することを確認したら、ij.batでselect * from fooとでもしてレコードがちゃんと作製されていることを確認します。