データベース活用ガイド

最終更新日: 2024年3月18日

接続手順

1. JDBCドライバの配置

各データベースベンダーから提供されているデータベースドライバファイルを次のフォルダに保存します。

$(DEVHOME)/customize/tomcat/lib

例えば Oracle 利用時は、Wagby-8.x.x/customize/tomcat/lib/ojdbc7.jar というファイルがコピーされている必要があります。

内蔵データベース(HSQLDB)では、データベースドライバはすでに組み込まれているため配置の必要はありません。外部データベース利用時に行ってください。

注意

同じデータベース用に、複数の(異なるバージョンの)JDBCドライバファイルを配置することはできません。(例えばOracle用にojdbc5.jarとojdbc6.jarの二つをcutomize/tomcat/libフォルダに置くことはできません。)

2. WagbyDesignerにおけるデータベースの設定

利用するデータベースによって「データベースのURL」項目が補完されます。
「[ホスト名]」の文字列部分をデータベースサーバのホスト名もしくはIPアドレスに、「[DB名]」の文字列部分を(予め用意した)データベースの名前に変更します。
Webサーバとデータベースサーバを同一のマシンにインストールする場合は「ホスト名」の部分は「localhost」と指定します。

ホスト名 "localhost", データベース側に用意したデータベース名 "sampledb" とした場合の、各データベースへの接続URL記述方法は次のとおりです。

データベース 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

3. フルビルド

データベースを切り替える場合、フルビルドが必要です。
(フルビルドはデータベースを切り替えた最初の一回だけ必要です。データベースを切り替えた後は、通常の差分ビルドをお使いいただけます。)

ワンポイント

このためWagbyトライアルキット・開発キットに内蔵されているデータベースを使ってシステムを構築後、外部データベースに切り替える場合は、外部データベースの設定を行ったあと、必ず「フルビルド」を行ってください

4. 接続テスト

check_dbスクリプトを使って、外部データベースに正しく接続できることを確認できます。

テーブルの作成

Wagbyの「ビルド」処理によるテーブルの作成は次のようになっています。

内蔵データベース

"環境>データベース" に "HSQLDB" を選択すると、内蔵データベースが利用されます。トライアルキットや評価用ライセンス利用時は常に内蔵データベースです。

内蔵データベース利用時は、フルビルドまたはテーブルの変更を伴うモデル定義の修正(項目の追加や削除、改名など)で、現在のテーブルは常に破棄(drop)され、再作成(create)されます。

開発者はテーブル定義変更前のデータを手動でエクスポートしておき、ビルド後にデータのインポートを行ってください。

インポート画面の選択肢 "data_build" を指定すると、ビルド前のデータをインポートすることができます。

外部データベース

最初のテーブル作成

init_dbスクリプトを実行すると、テーブルの作成(create) が行われます。 内蔵データベース利用時とは異なり、ビルドのたびに自動的にテーブルを作成することはありません。開発者が必要なタイミングで、init_db スクリプトを実行してください。

二回目以降(モデル定義の変更)

最初のテーブルを作成後、テーブルの変更を伴うモデル定義の修正(項目の追加や削除、改名など)を行った場合は、次のいずれかの方法で対応します。

drop&create 方式

  1. ビルドの前に現在のデータをエクスポートします。
  2. 次に現在のテーブル定義を破棄 (drop) します。
  3. 変更したリポジトリでビルドします。
  4. ビルドによって新しいテーブル定義(create ddl)が用意されます。これを使ってデータベース内に新テーブルを作成します。
  5. 1.でエクスポートしたデータをインポートします。

この方法は確実に変更を反映させることができますが、データ量によって処理時間がかかります。

スキーママイグレーション方式

現在のテーブル定義をベースに、変更に関する SQL 命令 (alter) を発行します。処理時間を短縮できますが、変更箇所の漏れがないよう留意してください。

migrate_dbスクリプトを使うことで、新旧アプリのテーブル定義の差分を適切に反映させることができます。8.5.0

コネクションプーリング

ビルドしたアプリケーションは Tomcat が提供するコネクションプーリング機構を使っています。

関連するページ

トラブルシューティング

テーブル作成や削除のスクリプト処理が途中でエラーになった場合の復旧方法

init_dbスクリプトやimport_dbスクリプトが途中で失敗した場合、DDL命令が中途半端に実行された可能性があります。

その後、テーブルの削除をdrop_dbスクリプトで行っても、必要なテーブルや制約がそろっていないために削除も失敗します。結果としていくつかのテーブルが削除できない不正な状態になります。

この場合は各データベースのツールを用いて、テーブルの削除作業を手動で行ってください。詳細は各データベースが提供しているツールの使い方をお読みください。

コマンドの実行順序による影響(アプリケーション入れ替え)

アプリケーションの入れ替えでは、旧版でexport_dbとdrop_dbを実行し、入替え後の新版でimport_dbを行う必要があります。

例えば旧版では存在したが、新版では存在しないモデルがあった場合は、旧版のdrop_dbを使わないとテーブルを削除することはできません。

サービスの起動順序による影響

Wagbyアプリケーションを起動するに、データベースは起動しておくようにしてください。この順序が逆の場合、Wagbyアプリケーションはデータベースと接続することができません。[参考 データベース環境 > データベースの自動再接続を有効にする]

障害の切り分け

外部データベース利用時にエラーが発生した場合、次の手順で切り分けてください。

  1. check_dbスクリプトは動作していますか。ここでエラーとなった場合、外部データベースへの接続ができていません。
  2. おおむね動作するが一部に動作不良があるという場合、データベース本体とJDBCドライバのバージョンの整合性を確認してください。JDBCドライバが古い場合、正常な動作とならないことがあります。
  3. 上記の問題ではない場合、ジャスミンソフトサポートへエラーメッセージを含んだログファイルをお送りください。

技術情報

スクリプト実行時のログファイルの出力先を変更することはできますか。

可能です。詳細は「Wagby Developer Network > 設定ファイル > ログの扱いその他のツールのログ > データベース操作用スクリプトのログ」をお読みください。

コミットのタイミングは何件ずつですか。

標準では20件ごとです。このサイズは WEB-INF/classes/hibernate.cfg.xml ファイルの property 属性で指定されています。

<property name="hibernate.jdbc.batch_size">20</property>

エラー時の対応

このため、20件まとめてコミットしようとするデータに一つでもエラーがあった場合、20件すべてインポートに失敗します。ログには20件ごとにエラーが記録されますが、これは、そのうちのどれかにエラーがあったことを意味します。

どのファイルがエラーになったかを特定するためには、バッチサイズを 1 に変更してインポート処理を行うようにしてください。