データベース活用ガイド
最終更新日: 2024年3月18日
各データベースベンダーから提供されているデータベースドライバファイルを次のフォルダに保存します。
例えば Oracle 利用時は、Wagby-8.x.x/customize/tomcat/lib/ojdbc7.jar というファイルがコピーされている必要があります。
同じデータベース用に、複数の(異なるバージョンの)JDBCドライバファイルを配置することはできません。(例えばOracle用にojdbc5.jarとojdbc6.jarの二つをcutomize/tomcat/libフォルダに置くことはできません。)
利用するデータベースによって「データベースのURL」項目が補完されます。
ホスト名 "localhost", データベース側に用意したデータベース名 "sampledb" とした場合の、各データベースへの接続URL記述方法は次のとおりです。
データベースを切り替える場合、フルビルドが必要です。
このためWagbyトライアルキット・開発キットに内蔵されているデータベースを使ってシステムを構築後、外部データベースに切り替える場合は、外部データベースの設定を行ったあと、必ず「フルビルド」を行ってください。
Wagbyの「ビルド」処理によるテーブルの作成は次のようになっています。
"環境>データベース" に "HSQLDB" を選択すると、内蔵データベースが利用されます。トライアルキットや評価用ライセンス利用時は常に内蔵データベースです。
内蔵データベース利用時は、フルビルドまたはテーブルの変更を伴うモデル定義の修正(項目の追加や削除、改名など)で、現在のテーブルは常に破棄(drop)され、再作成(create)されます。
開発者はテーブル定義変更前のデータを手動でエクスポートしておき、ビルド後にデータのインポートを行ってください。
init_dbスクリプトを実行すると、テーブルの作成(create) が行われます。 内蔵データベース利用時とは異なり、ビルドのたびに自動的にテーブルを作成することはありません。開発者が必要なタイミングで、init_db スクリプトを実行してください。
最初のテーブルを作成後、テーブルの変更を伴うモデル定義の修正(項目の追加や削除、改名など)を行った場合は、次のいずれかの方法で対応します。
この方法は確実に変更を反映させることができますが、データ量によって処理時間がかかります。 現在のテーブル定義をベースに、変更に関する SQL 命令 (alter) を発行します。処理時間を短縮できますが、変更箇所の漏れがないよう留意してください。
ビルドしたアプリケーションは Tomcat が提供するコネクションプーリング機構を使っています。
init_dbスクリプトやimport_dbスクリプトが途中で失敗した場合、DDL命令が中途半端に実行された可能性があります。
その後、テーブルの削除をdrop_dbスクリプトで行っても、必要なテーブルや制約がそろっていないために削除も失敗します。結果としていくつかのテーブルが削除できない不正な状態になります。
この場合は各データベースのツールを用いて、テーブルの削除作業を手動で行ってください。詳細は各データベースが提供しているツールの使い方をお読みください。
アプリケーションの入れ替えでは、旧版でexport_dbとdrop_dbを実行し、入替え後の新版でimport_dbを行う必要があります。
例えば旧版では存在したが、新版では存在しないモデルがあった場合は、旧版のdrop_dbを使わないとテーブルを削除することはできません。
Wagbyアプリケーションを起動する前に、データベースは起動しておくようにしてください。この順序が逆の場合、Wagbyアプリケーションはデータベースと接続することができません。[参考 データベース環境 > データベースの自動再接続を有効にする]
外部データベース利用時にエラーが発生した場合、次の手順で切り分けてください。
可能です。詳細は「Wagby Developer Network > 設定ファイル > ログの扱いその他のツールのログ > データベース操作用スクリプトのログ」をお読みください。
標準では20件ごとです。このサイズは WEB-INF/classes/hibernate.cfg.xml ファイルの property 属性で指定されています。
このため、20件まとめてコミットしようとするデータに一つでもエラーがあった場合、20件すべてインポートに失敗します。ログには20件ごとにエラーが記録されますが、これは、そのうちのどれかにエラーがあったことを意味します。
どのファイルがエラーになったかを特定するためには、バッチサイズを 1 に変更してインポート処理を行うようにしてください。
接続手順
1. JDBCドライバの配置
$(DEVHOME)/customize/tomcat/lib
注意
2. WagbyDesignerにおけるデータベースの設定
「[ホスト名]」の文字列部分をデータベースサーバのホスト名もしくはIPアドレスに、「[DB名]」の文字列部分を(予め用意した)データベースの名前に変更します。
Webサーバとデータベースサーバを同一のマシンにインストールする場合は「ホスト名」の部分は「localhost」と指定します。
データベース
URL
HSQLDB
jdbc:hsqldb:sampledb
PostgreSQL
jdbc:postgresql://localhost/sampledb
MySQL
jdbc:mysql://localhost/sampledb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
Oracle 9i/10g/11g/12c
jdbc:oracle:thin:@localhost:1521:sampledb
SQLServer 2012/2014/2016
jdbc:sqlserver://localhost;databasename=sampledb
DB2
jdbc:db2://localhost:50000/sampledb
DB2 AS/400
jdbc:as400://<hostname>/wagbydb;naming=system;errors=full
3. フルビルド
(フルビルドはデータベースを切り替えた最初の一回だけ必要です。データベースを切り替えた後は、通常の差分ビルドをお使いいただけます。)
ワンポイント
4. 接続テスト
テーブルの作成
内蔵データベース
外部データベース
最初のテーブル作成
二回目以降(モデル定義の変更)
drop&create 方式
スキーママイグレーション方式
コネクションプーリング
関連するページ
トラブルシューティング
テーブル作成や削除のスクリプト処理が途中でエラーになった場合の復旧方法
コマンドの実行順序による影響(アプリケーション入れ替え)
サービスの起動順序による影響
障害の切り分け
技術情報
スクリプト実行時のログファイルの出力先を変更することはできますか。
コミットのタイミングは何件ずつですか。
<property name="hibernate.jdbc.batch_size">20</property>
エラー時の対応