skillup

技術ブログ

Database Java

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

投稿日:

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以外にしていると処理が残っていて、意図した処理と違う動きをすることがあります。

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

http://d.hatena.ne.jp/gloryof/20120922/1348299856

property

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

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

javax.persistence.schema-generation.database.action

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

create・・なければ作成

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

eclipselink.logging.parameters

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

eclipselink.logging.level.sql

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

https://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging

http://publib.boulder.ibm.com/wasce/V3.0.0/ja/jpa.html

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

http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0870/APR2/EU150094.HTM

-Database, Java
-,

執筆者:


comment

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

関連記事

no image

アンチパターン トランザクションスコープ+大量データのリアルタイム集計+接続が詰まる

本日は主にインフラの設計的なことに関して。 Contents1 トランザクションスコープの設定1.1 デメリット1.2 対策2 大量データのリアルタイム集計2.1 デメリット2.2 対策3 詰まると接 …

no image

cakePHPでのマイグレーション

開発を続けているとデータベースのカラムの構造が変更するってことはしょっちゅうですが、管理がいい加減だとメンバー間でテーブルの構造が変わっていたり、本番と開発で違ってくるなどのトラブルが続出します。 そ …

no image

CDIの循環依存エラー&JSFでの条件分岐について

本日は小ネタなので2つのネタをまとめます。 Contents1 CDI循環依存エラー2 JSFでの条件分岐 CDI循環依存エラー 半年近くやってますが、いまだにJavaEEでエラーがでてくると焦ります …

no image

mavenでのjarファイル作成

ここ半年Javaを触っていますが、9割以上がWEBアプリでバッチ系のものを作る機会から外れていました。 今回バッチを作っており、IDEでは動くのにいざコンソールで動かそうと思ったら動かないということが …

no image

型パラメータに関して その2

Javaでオブジェクト指向に基づいたコーディングをするために必須であり、最初の難関だったのが型パラメータでした。 Contents1 型パラメータが必要なケース2 型パラメータの制限3 クラスインスタ …