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

SQL基礎 ウィンドウ関数

SQLの基礎(主にSELECT)を whereはレコードに対しての集計、havingはレコードの集合に対しての集計 ビューは一時的なselect文なのでサブクエリとほぼ等価 条件分岐で出力項目を変えた …

no image

SQL基礎 case式について

case式に関して。 集約系の関数では複雑な処理を一気に行うことができる。 case式は1列のみ有効。複数の列に対して行うことはできない。 case ~ when ・・・thenではwhenが評価され …

no image

ポリモフィズム(多態性)とは

Javaでオブジェクト指向の考え方の重要な考え方であるポリモフィズムについて。 Contents1 ポリモフィズムとは?2 ソース ポリモフィズムとは? 日常的に使っていながらいざ説明するとなると困り …

no image

GlassFishとTomcatの違い

JavaEEの開発を始めてからは基本的にサーバーとしてGlassFishを使っています。 一般的なJavaのサーバーというとTomcatが有名ではないでしょうか。少なくとも私はTomcatしか知りませ …

no image

NOT EXISTSの利用

引き続きNOT EXISTSの利用です。 思った以上に使えますね・・・がムズイ。 今回は下記のようなテーブル(seats)があるとします。 ケースとしては新幹線の座席番号で空は席が空いている状態、占は …