サポート > データベース活用ガイド(R7)

Wagby はさまざまなデータベースを利用することができます。本ガイドでは、各データベース利用時の注意点やトラブルシューティングについて説明します。

1. JDBCドライバの配置

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

$(DEVHOME)/customize/tomcat/lib

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

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

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&relaxautoCommit=true
Oracle 9i/10g/11g/12c jdbc:oracle:thin:@localhost:1521:sampledb
SQLServer 2005/2008/2012/2014 jdbc:sqlserver://localhost;databasename=sampledb
DB2 jdbc:db2://localhost:50000/sampledb
DBMaster jdbc:dbmaster:sampledb

3. フルビルド

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

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

4. 接続テスト

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

その他の作業

R7.0〜R7.3.1をお使いの方のみ:JDBCドライバファイル名の改名

R7.0〜R7.3.1をお使いの方は、データベースドライバを配置後、以下の命名規則に従ってファイル名を変更してください。

データベース データベースドライバファイル名(改名後)
PostgreSQL postgresql.jar
MySQL mysql-connector-java.jar
Oracle 9i/10g/11g/12c ojdbc14.jar (※ ojdbc5.jar/ojdbc6.jar/ojdbc7.jar ではなく ojdbc14.jar に改名してお使い下さい)
SQLServer 2005/2008/2012/2014 sqljdbc.jar (※ sqljdbc4.jar を sqljdbc.jar に改名してお使い下さい)
DB2 db2jcc.jar (※ db2jcc4.jar を db2jcc.jar に改名してお使い下さい)
db2jcc_license_cu.jar (※ ホストへの接続などDB2 Connectを使用する場合)

※ R7.3.2 以降のWagbyでは、ここで説明した「ファイル名を改名する」手順は不要です。

初回

init_dbスクリプトを使って、テーブルの作成ならびにデータの初期登録を行います。

二回目以降

ビルドを行う前にexport_dbスクリプトで現在のデータを保存後、drop_dbスクリプトでデータベース内のテーブルを削除します。

ビルド後にimport_dbスクリプトでデータベース内に新テーブルを作成します。あわせてデータを復元させます。

外部データベース利用時は、init_dbスクリプトを実行するタイミングで、テーブルの作成(create table) が行われます。フルビルド・差分ビルドではテーブルの作成は行われません。

この仕組みのため、モデルやモデル項目の追加がなければ(より厳密には、テーブル定義を伴う変更が生じていなければ)ビルド後にinit_dbスクリプトを実行する必要はありません。
ビルド後のアプリケーション入れ替えにともなう外部データベース利用時のインポート・エクスポートはスクリプトを用いて行ってください。外部データベース利用時の管理処理のインポート・エクスポート機能は特定モデルのバックアップやリストアでのみ、ご利用いただけます。

利用するデータベースによって、型の変換ルールが異なります。またデータベース固有の制約もあります。詳細は以下の内容をお読みください。

  1. 内蔵データベース (HSQLDB)
  2. MySQL 4/5/6
  3. PostgreSQL 8/9
  4. Oracle (9i/10g/11g)
  5. SQLServer 2005
  6. SQLServer 2008
  7. DB2 (Version 8.1)
  8. DBMaster (JDBCドライバファイルや、Hibernate向けDialectファイルが別途必要です。詳細は DBMaker Japan へお問い合わせください。

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

lib/tomcat-dbcp.jarです。その実体は Apache Commons の DBCP です。同梱されているバージョンは、Tomcat 本体のバージョンによって異なります。

Commons DBCP については、こちらのサイトが参考になります。
http://www.limy.org/program/java/commons_dbcp.html

Tomcat JDBC Pool への変更

コネクションプーリングを Tomcat JDBC Pool に変えることができます。この場合、Wagbyのリポジトリに設定した値ではなく、カスタマイズして保存された設定ファイル (server.xml) に記載される値が有効になります。

参考文献「Commons DBCPを超えるTomcat JDBC Poolとは」
http://www.atmarkit.co.jp/ait/articles/1111/07/news212_2.html

関連するページ

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

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が生成する「DDL」はどのように決められていますか。

Wagby はモデル定義から create table 文、drop table 文といった DDL を自動生成します。これは Hibernate の機能を用いています。具体的には Hibernate マッピングファイル (.hbm.xml) から生成されるものです。

DDL の項目の並びは、モデル定義の項目順ではありません。Hibernate マッピングファイルの記載順となります。

Wagbyが生成する「DDL」はどこに保存されていますか。

自動生成されたDDLファイルは以下のフォルダに保存されています。
wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/dbschema/createddl/

Wagbyが生成する「制約名」はどのように決められていますか。

"drop constraint FKXXXX" の、FKXXXXX に相当する部分は Hibernate が自動生成しています。Wagby では特に制御していません。