失敗
『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 にする方法を説明します。
<?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 接続に使用するパスワードを指定します。 |
