JPAの基本を覚える (2/7)
作成:2017-10-28 09:07
更新:2017-10-28 09:07
更新:2017-10-28 09:07
■persistence.xmlの作成
まずは、persistence.xmlを作成しましょう。このファイルは、「main」フォルダ内の「resources」フォルダの中に用意をします。
「resources」フォルダの中に、「META-INF」というフォルダを作成して下さい。そしてこの「META-INF」フォルダの中に、「persistence.xml」という名前のファイルを作成します。ここに記述するソースコードは、下のリスト欄のようになります。
persistence.xmlは、以下のような形で記述をします。
persistence.xmlは、ルートに<persistence>というタグを用意します。そしてこの中に、<persistence-unit>というタグを作成します。このタグが、パーシスタンス・ユニットになります。この中に必要な情報を色々と記述しておくのです。最低でも以下のタグは用意する必要があります。
<provider>――これはプロバイダーというものを指定するタグです。これは、実際に利用するJPAのエンジン部分のプログラムのことです。JPAは仕様であり、さまざまな実装が存在します。この<provider>タグで、どのJPA実装を利用するかを指定します。
<class>――JPAで利用するエンティティクラスを指定するタグです。
この他に、<properties>というタグが用意されていますね。これは、パーシスタンス・ユニットで必要となる情報をプロパティとしてまとめたものです。具体的には以下のような項目が用意されています。
javax.persistence.jdbc.driver ――データベースのドライバークラスの指定です。H2では、org.h2.Driverクラスを指定します。
javax.persistence.jdbc.url ――アクセス先のデータベースのURLです。ここでは、jdbc:h2:mem:dbと指定をしています。これはH2でメモリ内にdbという名前でデータベースを保存していることを示します。
javax.persistence.jdbc.user ――アクセスするユーザー名です。
javax.persistence.jdbc.password ――これはサンプルにはありませんが、パスワードを指定するものです。
eclipselink.ddl-generation――これは、EclipseLink特有のもので、データベーステーブルの生成に関するものです。"drop-and-create-tables"と指定して、実行時に、それまでのテーブルを削除し新たにテーブルを生成します(ただし、ここではメモリにデータベースを保存しているのでその必要はないんですが……)。ファイルに保存する場合、これを指定することでサーバー起動時にデータベースを初期化できる、ということですね。
eclipselink.ddl-generation.output-mode――出力モードの指定です。databaseと値を指定してありますが、これは出力先がデータベースであることを示すものです。
H2はデータベースサーバーではないので、サーバータイプのようにユーザー名とパスワードでログインする必要がありません。このためパスワードの情報は特に用意していません。MySQLなどを利用する場合は用意する必要がある、ということです。
「resources」フォルダの中に、「META-INF」というフォルダを作成して下さい。そしてこの「META-INF」フォルダの中に、「persistence.xml」という名前のファイルを作成します。ここに記述するソースコードは、下のリスト欄のようになります。
persistence.xmlは、以下のような形で記述をします。
<persistence ……略……>
<persistence-unit ……略……>
<provider>プロバイダー</provider>
<class>エンティティクラス</class>
<properties>
<property name="プロパティ" value="値" />
……必要なだけ記述……
</properties>
</persistence-unit>
</persistence>
persistence.xmlは、ルートに<persistence>というタグを用意します。そしてこの中に、<persistence-unit>というタグを作成します。このタグが、パーシスタンス・ユニットになります。この中に必要な情報を色々と記述しておくのです。最低でも以下のタグは用意する必要があります。
<provider>――これはプロバイダーというものを指定するタグです。これは、実際に利用するJPAのエンジン部分のプログラムのことです。JPAは仕様であり、さまざまな実装が存在します。この<provider>タグで、どのJPA実装を利用するかを指定します。
<class>――JPAで利用するエンティティクラスを指定するタグです。
この他に、<properties>というタグが用意されていますね。これは、パーシスタンス・ユニットで必要となる情報をプロパティとしてまとめたものです。具体的には以下のような項目が用意されています。
javax.persistence.jdbc.driver ――データベースのドライバークラスの指定です。H2では、org.h2.Driverクラスを指定します。
javax.persistence.jdbc.url ――アクセス先のデータベースのURLです。ここでは、jdbc:h2:mem:dbと指定をしています。これはH2でメモリ内にdbという名前でデータベースを保存していることを示します。
javax.persistence.jdbc.user ――アクセスするユーザー名です。
javax.persistence.jdbc.password ――これはサンプルにはありませんが、パスワードを指定するものです。
eclipselink.ddl-generation――これは、EclipseLink特有のもので、データベーステーブルの生成に関するものです。"drop-and-create-tables"と指定して、実行時に、それまでのテーブルを削除し新たにテーブルを生成します(ただし、ここではメモリにデータベースを保存しているのでその必要はないんですが……)。ファイルに保存する場合、これを指定することでサーバー起動時にデータベースを初期化できる、ということですね。
eclipselink.ddl-generation.output-mode――出力モードの指定です。databaseと値を指定してありますが、これは出力先がデータベースであることを示すものです。
H2はデータベースサーバーではないので、サーバータイプのようにユーザー名とパスワードでログインする必要がありません。このためパスワードの情報は特に用意していません。MySQLなどを利用する場合は用意する必要がある、ということです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="mydataentity-persistance" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>com.tuyano.libro.MyDataEntity</class> <properties> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:db" /> <property name="javax.persistence.jdbc.user" value="sa" /> <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> <property name="eclipselink.ddl-generation.output-mode" value="database" /> </properties> </persistence-unit> </persistence>
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る