データベース連携(環境構築)
サンプルDB作成
※フレームワークとしての内容は、それ以外のSQLでもほぼ変わりません
手元に『MySQL』が無い方は 「XAMPP」をインストール するのが早いです。 まずは学習用として以下DBを作成します。
CREATE DATABASE jakarta_db; 次に『users』テーブルを作成しましょう。
id int AUTO_INCREMENT PRIMARY KEY ,
mail VARCHAR(50) NOT NULL UNIQUE ,
pass VARCHAR(255) NOT NULL ,
name VARCHAR(30) NOT NULL ,
active CHAR(1) DEFAULT ' ' ,
version int DEFAULT 0 ,
create_ymd date ,
create_hms TIME ,
update_ymd date ,
update_hms TIME ,
del_sn CHAR(1) DEFAULT ' '
) ENGINE=InnoDB;
Wildflyにデータソースを設定
一見『Apache』の様なHTTP通信を捌くWebサーバーの様に思われるかもしれませんが、旧名を『JBoss AS』と言い、
Java EE / Jakarta EE の処理を実行する『アプリケーションサーバ』となります。 まずは自身のMySQLのバージョンを確認しましょう。
C:\~\hoge> mysql --version
mysql Ver 9.7.0 for Win64 on x86_64 (MySQL Community Server - GPL)
ページ内の「Select Operating System」で 「Platform Independent」 を選択します。
ZIP形式(mysql-connector-j-9.7.0.zip) または TAR.GZ形式のアーカイブが表示されるので、ダウンロードします。
※Windowsの場合は「ZIP」です 次画面で何やら「Login」「Sign Up」ボタンが表示されたら『No thanks, just start my download.』をクリックしましょう。 ダウンロードしたら、ZIPファイルを解凍します。
展開されたファイル『mysql-connector-j-9.7.0.jar』がドライバとなります。
~\wildfly-28.0.1.Final\standalone\deployments ②「bin/standalone.bat」より、Wildflyを起動します。 ③ 別のターミナルを開きます。
・「jboss-cli.bat --connect」を叩きます。
・接続に成功すると、プロンプトが [standalone@localhost:9990 /] という表示に変わります。
『DB名』『接続ユーザー名』『接続パスワード』のみ変更して下さい。
[standalone@localhost:9990 /] /subsystem=datasources/data-source=MySqlDS:test-connection-in-pool
{
"outcome" => "success",
"result" => [true]
}
http://localhost:9990 画面上段リンク『Deployments』選択
左メニューに設定した『mysql-connector-j-9.7.0.jar』があるハズです。
それを選択すると、右画面が明らかにアクティブって感じの表示になります。
エクリプスをJPA仕様に設定する
<!-- JPA -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
・左メニューから 「プロジェクト・ファセット (Project Facets)」 を選択
・画面中央のリストにある『JPA』にチェックを入れます ・つづいて右側のプルダウンよりバージョンを選択します
⇒ WildFly 27以降(Jakarta EE 10)を使っている場合は『3.1』とします ・画面下に表示される『より詳しい構成が必要..』というリンクをクリックします
・JPA実装は『ライブラリー構成を無効』を選択
・接続の追加をクリックする
・何か古いドライバしか表示されないが、構わず一番新しいのを選択
・同画面の『jarリスト』を選択します
・先ほど選択したドライバを選択して『JAR/ZIPの除去』押下 ・『JAR/ZIPの追加』押下
⇒ ここで新たなドライバを指定するので、先ほどダウンロードしたドライバを以下へ設置して選択します。
~\eclipse\plugins\mysql-connector-j-9.7.0.jar ・同画面の『プロパティ』を選択します
・項目『Driver Class』が「com.mysql.jdbc.Driver」となっている場合は古いです。
⇒ クリックすると編集できるので『com.mysql.cj.jdbc.Driver』に書き換えます ・『OK』押下で「ドライバー及び接続の~」画面へ戻ります
・ここで接続情報を設定して『接続テスト』を押下します
・成功した場合は『パスワードの保存』にチェックを入れ『完了』押下
[Ctrl]+[Shift]+[r]で『persistence.xml』の作成された場所を確認してみましょう。
もし以下の場所に作成された場合は間違いです。
/src/main/java/META-INF/persistence.xml
/src/main/resources/META-INF/persistence.xml
※ドラッグすれば移動できます JPA(WildFly内のHibernate)は、クラスパスの直下にある『META-INF/persistence.xml』を探すため、ここへ設置する必要があります。
persistence.xml
以下の様に修正します。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="https://jakarta.ee/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence
https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
version="3.0">
<!-- トランザクションタイプはコンテナ管理の "JTA" にする -->
<persistence-unit name="myMysqlUnit" transaction-type="JTA">
<!-- WildFlyで設定したJNDI名を指定(例: java:jboss/datasources/ExampleDS) -->
<jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
<properties>
<property name="jakarta.persistence.schema-generation.database.action" value="none" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
</properties>
</persistence-unit>
</persistence>
| persistence-unit |
『myMysqlUnit』はJPAフレームワークを呼び出す名前を任意に付けられます。 『JTA』とする事でコンテナ管理トランザクションを使えます。 ※『RESOURCE_LOCAL』は直接トランザクションを制御する場合に使います。 |
| jta-data-source | 『Wildfly設定』で設定したデータソース名となります。 |
| hibernate.show_sql | コンソールに発行したSQLの内容を出力するか(ウザいので[false]) |
| hibernate.format_sql | 上記SQLを整形するか(同じく[false]) |





これまでの設定で、実は以下のファイルが書き換わっています。
ですので、排他制御でファイルを開いてると確実に失敗するのでご注意を!~\wildfly-28.0.1.Final\standalone\configuration\standalone.xml
因みに今回は以下(太文字)の部分が追加されました。 ~ 省略 ~
</security>
</datasource>
<datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS">
<connection-url>jdbc:mysql://localhost:3306/jakaruta_db</connection-url>
<driver>mysql-connector-j-9.7.0.jar</driver>
<security>
<user-name>root</user-name>
<password>xxxxxxxx</password>
</security>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
~ 省略 ~