skillup

技術ブログ

Database Java

persistence.xmlのプロパティについて

投稿日:2015年6月16日 更新日:

JavaEEではデータベースとの設定情報はpersistence.xmlに記述します。

(ユーザー名、パスワード、ポート、driver名、データベース名などの情報はglassfish-resource.xmlに記述します。)

最初のころはわけもわからず書いていましたが、最近少しずつプロパティの意味が分かってきました。

サンプルコードを例にちょっと説明したいと思います。

ちなみにDBとつながっていることが前提ですので、JavaEEで動かしている方はDBとつなげましょう。

わからない方はこの記事を参考にしてくださいね→GlassfishでDB接続

サンプルコード

IDEを使っていると自動生成されたりしますが簡単な意味などは分かっているとやはり困った時やカスタマイズするときに自分を助けてくれます。

各種プロパティ

persistence-unit

name

永続化ユニットの名称。要するに「データベースを識別するユニークな名称」です。大抵はEJBのソースに

@PersistenceContext(unitName = “XXXXXXX”)と記述してあるとおもいますので、これがユニット名になります。

なにはともあれこれがないとデータベースとそもそも接続できないので、始まりません。

transaction-type

EntityManagerの使用するトランザクションタイプを指定します。

ディフォルトではJTAになっていると思いますし、ほぼそれで問題ないかと思います。

これを自分で設定することもできます。

JavaEEの場合、自動でトランザクション処理をglassfishが行いますので例えばデータ入力時にエラーが起こると自動でロールバックされます。

jta-data-source

glassfishで定義しているデータソースのことです。大体はjdbc/XXXになると思います。

class

上のサンプルにはありませんが、バッチ処理などでJPAを使用する場合(つまりJavaEEではない場合)エンティティをここに登録しておかないと動きません。

JavaSEでJPAを使う場合はここにエンティティを登録しておきましょう。

exclude-unlisted-classes

現在、調べ中ですがどうやらJPAの対象化でないもののチェックを行うようです。

shared-cache-mode

JPAは自動でキャッシュ機能がついてます。

ここをNONE以外にしていると処理が残っていて、意図した処理と違う動きをすることがあります。

ちなみにキャッシュについては↓ここが詳しいです。

キャッシュ

property

key=>value式で様々なプロパティを設定できます。ここはプロバイダの実装に依存するみたいですね。

私が使ったことがあるのがEclipseLinkのみなのでご了承ください。

javax.persistence.schema-generation.database.action

これを使用するとプログラム実行時やデプロイ時にテーブルを自動生成してくれたりします。

create・・なければ作成

drop-and-create・・常にドロップし、エンティティからテーブルを作成

eclipselink.logging.parameters

プロパティがtrueのときにJPAで実行されるSQLをログに吐き出してくれます。

eclipselink.logging.level.sql

プロパティの値に応じたログを出力してくれます。プロパティの詳細な説明は下記リンクに記載してあります。

Eclipse How To Configure Logging

デプロイメント・プランの作成 > JPA

まだまだpersistence.xmlの応用範囲は広いですね。ちなみに参考にしたのは下記リンクです。

persistence.xmlの詳細

-Database, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Optionalについて その1

Streamに続いて、Java8で新搭載された機能がOptional です。 Javaではnullの処理をいちいちしなくてはいけないのがいろいろと面倒ですが、Optionalの機能をうまく使うことで可 …

no image

JSONへの変換

近年はJavaSciprtを利用した動的なサイトが多いため、データのやり取りをAjaxで行うことも多かったりします。 JavaScriptの場合、データをJSON形式で扱うため、サーバー側からレスポン …

no image

O/Rマッパー iciqlについて

以前、このブログでも紹介したO/Rマッパーのiciqlについて、使い方や問題点がある程度わかったので書いておきます。 Contents1 インストール2 自動生成3 注意点3.1 Date型のインポー …

no image

Fileのアップロード

業務でCSVのアップロードを行っていますが、ファイルになりますと当然文字列ではなく、バイナリ形式のデータが必要になります。 アップロード自体の処理を書いていなかったので、その扱い方についてちょっと書い …

no image

HAVING句について NULL時の動き

HAVING句のNULLがあった時の挙動にたいしてメモリます。 COUNTの処理 対象上の列数を数えるのにCOUNTを使うと思いますが、COUNT(*)とCOUNT(列名)では動きが若干違っており、前 …

アーカイブ