- Category -

HOME > 失敗レポート > JBoss > JBoss 4.2 - Entity Bean の永続化に MySQL を使用する

JBoss 4.2 - Entity Bean の永続化に MySQL を使用する

作成日時:2007/05/14  更新日時:2007/05/14

失敗

JBoss 4.2 - デフォルトのデータソースを MySQL に変更する』で、データソースに MySQL を使用する方法をレポートしました。 しかし、EJB 3.0 の Entity Bean を使用する場合は、この設定だけでは不足です。

本稿では、Entity Bean で MySQL を使用するために必要な追加作業について記述します。

環境

このレポートは、以下の環境について記述したものです。

JDK JDK 6 Update 1
AP サーバ JBoss Application Server 4.2.0 GA
DBMS MySQL 5.0.41 Community Server
JDBC ドライバ MySQL Connector/J 5.0.5

原因

EJB 3.0 の Entity Bean では、JPA (Java Persistence API) を利用しています。 そのため、JPA の設定ファイルである persistence.xml を作成し、ejb-jar ファイル内の META-INF ディレクトリに配置しなければなりません。

解決策

EJB 3.0 の Entity Bean で、データの保存先を MySQL にする方法を説明します。

(1) persistence.xml の作成

1. persistence-unit 要素に永続化ユニットを定義します。name 属性に識別子、transaction-type 属性にエンティティ マネージャのタイプ (JTA or RESOURCE_LOCAL) を指定します。
2. jta-data-source 要素に使用するデータソースを指定します。mysql-ds.xml の jndi 要素で指定した値を記述してください。
3. class 要素にエンティティのクラス名を指定します。

[persistence.xml] JBoss - MySQL
<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">

  <!-- 永続化ユニット -->
  <persistence-unit name="database" transaction-type="JTA">

    <!-- データソース (mysql-ds.xml で指定した値を使います) -->
    <jta-data-source>java:/DefaultDS</jta-data-source>

    <!-- エンティティ -->
    <class>sample.SampleEntity</class>

  </persistence-unit>

</persistence>

以上の設定で、Entity Bean の永続化ユニットに MySQL を使用することできます。 より詳細な設定を行いたい場合は、properties 要素に記述します (詳細は補足を参照してください) 。

補足

■ JBoss 用 persistence.xml のプロパティ

property 要素はベンダー固有の設定を、name 属性と value 属性をセットにして指定します。

以下に、JBoss で使用可能なプロパティを示します。

hibernate.hbm2ddl.auto DDL を自動生成するかどうかを指定します。
create … スキーマを再作成します。
create-drop … 起動時にスキーマを作成し、終了時にスキーマを削除します。
update … スキーマを検証し、差異があれば更新します。
validate … スキーマを検証し、差異があればエラーとします。
hibernate.show_sql Hibernate が生成した SQL をログ出力するかどうかを指定します。
true … 出力する
false … 出力しない
hibernate.dialect DB の実装の違いを吸収し、SQL 生成を最適化させるクラスを指定します。
DB ごとのクラス名は Hibernate Reference Documentation の SQL Dialects を参照してください。
hibernate.connection.driver_class JDBC ドライバのクラス名を指定します。
hibernate.connection.url 接続 URL を指定します。
hibernate.connection.username DB 接続に使用するユーザ名を指定します。
hibernate.connection.password DB 接続に使用するパスワードを指定します。

関連レポート

参考サイト