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

集合としてのSQL その2

本日も前回に引き続き集合としてのSQLに入っていきます。 Contents1 完全一致のテーブル2 重複行の削除 完全一致のテーブル 下記のようなテーブル(supparts)があり、持っている部品が完 …

no image

論理設計のグレーノウハウ 列持ちテーブル、集計キー、多段ビュー

前回に引き続き論理設計のグレーノウハウについて。 Contents1 列持ちテーブル1.1 メリット1.1.1 シンプルな設計1.1.2 入出力のフォーマットと合わせやすい1.2 デメリット1.2.1 …

no image

MySQLのセキュアな設定

以前SSHの設定についていろいろ書いたんで今回はMySQLに関して。 Contents1 基本的な処方箋(MySQLに限らないかも)2 ホストのアクセスを制限する3 LOCAL INFILEコマンドを …

no image

cake sql系+リレーション+ヘルパー

先月末に引き続いてcakeネタをもりっといきます。 といっても自分用の小ネタリンク集です。 Contents1 sql系の小ネタ1.1 findとread1.2 find(‘count&# …

no image

大規模Webサービス技術入門 DBの分散

前回に引き続き、大規模サービスを運用するときに必要になるMySQLの知識についてのまとめ Contents1 テーブル・SQL設計2 レプリケーション機能3 パーティショニング テーブル・SQL設計 …