既存テーブル定義からリポジトリを生成する

最終更新日: 2022年5月31日
R8 | R9

概要

既存システムのリレーショナルデータベースからテーブル定義情報を読み込み、Wagby のリポジトリを半自動生成することができます。 読み込むことができるのは、次の情報です。

  • テーブル名
  • 項目名
  • 項目の型
  • 外部キー

Wagby が対応している、すべてのデータベースを利用できます。さらに Microsoft Access の MDB ファイルにも対応しています。

使い方

「運用 > その他」のタブにある「インポート」を選択します。

図1 リポジトリインポート画面

1. JDBCドライバファイルの配置

Wagby-8.x.x\customize\tomcat\lib に、移行対象となるDB向けのJDBCドライバファイルを置きます。

2. 接続先データベースを指定する

「パラメータ」の欄に、接続先データベースの情報を指定します。図2に例を示します。

図2 接続先データベースの設定
driver=org.postgresql.Driver
url=jdbc:postgresql://localhost/wagbydb
user=postgres
password=postgres

上記パラメータにそれぞれ、適切な値を指定します。

もう一つの方法 : サブデータベースを指定する

サブデータベースの設定を再利用することもできます。図3に、サブデータベースの設定例を示します。

図3 サブデータベースの設定(1)

サブデータベース1 の情報を利用する場合、パラメータに "subdatabase1" または省略形である "s1" と指定します。

図4 サブデータベースの設定(2)
サブデータベース2 の情報を利用する場合は "subdatabase2" または省略形 "s2" と指定します。

実行

「インポートを実行」ボタンを押すと、接続先データベースのすべてのテーブル定義を読み込みます。

Oracle の場合

R8.5.5までのバージョン

customize/tomcat/lib フォルダに、wagbydesigner/webapps/wagbydesigner/WEB-INF/env/lib-common/j_conint.jar をコピーしてください。つまり Oracle 用 JDBC ドライバファイルと、j_conint.jar ファイルの両方が必要です。

R8.5.6以降、この操作は不要です。

Microsoft Excel の場合

Microsoft Excel からリポジトリを生成することができます。詳細は「チュートリアル > ドラッグ&ドロップによるアプリケーション開発」をお読みください。

Microsoft Access の場合

Microsoft Access のファイルからリポジトリを生成する場合は、次の手順で行ってください。

JDBCドライバファイルの配置

次のファイルを Wagby-8.x.x\customize\tomcat\lib に保存します。

  • hsqldb.jar
  • jackcess-2.1.2.jar
  • ucanaccess-3.0.2.jar

ここからダウンロードできます。

パラメータの指定は不要

パラメータの指定は不要です。空白としてください。

MDBファイルをアップロードする

対象となる MDB ファイルをアップロードし、「インポートを実行」ボタンを押下してください。

指定できるパラメータ

リポジトリのインポートでは次のパラメータを指定することができます。パラメータは「キー=値」の形式で指定します。複数記述する場合は、改行で区切ります。

パラメータ説明
driverJDBCドライバクラスを指定します。driver にはファイル名ではなく Java のクラス名を指定してください。driver=org.postgresql.Driver
urlデータベースの接続先情報を指定します。詳細は利用するデータベースのJDBC接続手順方法に関するドキュメントをお読みください。(製品ごとに記述が異なります。)url=jdbc:postgresql://localhost/wagbydb
userデータベース接続に必要なアカウントを指定します。user=postgres
passworduser指定に対応したパスワードを指定します。password=postgres
subdatabseXX環境>データベースの設定にある、サブデータベースの接続情報を再利用します。XXの部分には、サブデータベースの設定番号が入ります。この指定を行う場合、driver,url,user,passwordは指定しないようにしてください。subdatabse1
sXXsubdatabseXX の省略形です。s1
includeModel取り込むテーブル名を指定します。複数指定する場合はコンマで区切ります。excludeModel との併用はできません。記載したテーブル名は正規表現として扱われます。そのため A と記載すると、テーブル A1 や A2 もマッチします。includeModel=A,B
excludeModel取り込みを除外するテーブル名を指定します。複数指定する場合はコンマで区切ります。includeModel との併用はできません。記載したテーブル名は正規表現として扱われます。そのため A と記載すると、テーブル A1 や A2 もマッチします。excludeModel=C
ignoreNotnull移行対象テーブルが NOT NULL DEFAULT となっていた場合、取り込み後の定義はすべて必須項目になります。これを避けるための設定です。(*1) 複数指定する場合はコンマで区切ります。正規表現を使うこともできます。ignoreNotnull=A,B
keepTypeテーブル定義の列の型定義を「テーブルの物理型」設定に転記するようにします。デフォルトはfalseです。keepType=true
debugtrueを指定すると、Tomcatコンソールにデバッグ用のメッセージを表示します。(Designerの画面には表示されません。)debug=true
これによって Wagby では必須項目と扱われませんが、実テーブルは NOT NULL であるため、空欄の項目で入力しても空白に置換させる処理を加える必要があります。

代表的なデータベースのdriver指定

データベースdriverの指定
PostgreSQLdriver=org.postgresql.Driver
Oracle[R8.5.11以降] driver=oracle.jdbc.driver.OracleDriver
[R8.5.10まで] driver=jp.jasminesoft.conint.oracle.OracleDriver ※ Oracle19c JDBCドライバに未対応
MySQLdriver=com.mysql.jdbc.Driver
SQLServerdriver=com.microsoft.sqlserver.jdbc.SQLServerDriver
Access(指定なし)

仕様

  • モデルの検索、一覧表示、詳細表示、登録、更新、削除を行う機能が有効になります。
  • 検索と一覧表示は同一画面として扱います。また一覧表示はグリッド形式となります。
  • 検索画面への遷移を行うメニューボタンが用意されます。メニューボタンは「サービス」タブに含まれます。
  • 型は「文字」「数字」「日付」「モデル参照(検索)」を判別します。モデル参照は、外部キー指定 (foreignkey) の場合に有効です。
  • DBのカラムサイズを判断材料に使います。文字列型で255文字以上なら、テキストエリアとして扱います。
  • 浮動小数点型の場合、桁数情報があればそれを使い、入力フォーマットに反映させます。
  • NOT NULL 制約を引き継ぎます。
  • 日付型は登録画面を開いたときの初期値に関数 TODAY を、日付時刻型は関数 NOW を指定します。
  • モデルID(英語)と項目ID(英語)が日本語の場合、それぞれ「modelXX」「itemXX」を自動で設定します。
  • モデルID(英語)と項目ID(英語)がWagbyの名前付ルールに合致しないとき、それぞれ「modelXX」「itemXX」を自動で設定します。

手動で修正すること

  • 外部キーはすべて「モデル参照(検索)」となってしまいますが、実際には繰り返しコンテナまたは外部キー(親子モデル関係)として扱うことが適切なケースがあります。自動判定できないため、開発者がこれらの構造を適切に見直してください。
  • 複合キーの場合の「モデル参照(検索)」も同様です。
  • モデルIDや項目IDに日本語が設定される場合があります。これらは手動で修正し、英数字に置き換えてください。
  • 入力チェックや出力フォーマットなどは適切に修正してください。

謝辞

Microsoft Access のファイルを読み込むため、オープンソースの UCanAccess を利用しています。

変更履歴

R8.5.6

  • Oracle 利用時、j_conint.jar を自動で取り込むようにしました。

R8.0.5

  • テーブル名と項目名が日本語の場合、これを物理テーブル/カラム名に反映させるようにしました。
  • Oracle からのテーブル定義読み込み時、NOT NULL制約が引き継がれない(全て必須項目になってしまう)問題を修正しました。
  • Oracle からのテーブル定義読み込み時、コメントとして記載している項目名日本語を読み込むようにしました。