設定ファイル最終更新日: 2019年2月19日

設定ファイル initdb.xml

initdb.xml は InitLoader コマンドが用いる設定ファイルです。 このファイルは wagbyapp/webapps/wagby/WEB-INF/export/conf フォルダに含まれています。

initdb.xml は次のような構造になっています。

<config>
  <!-- データベースの設定 -->
  <database ...>
    ...
  </database>
  <!-- 各フォルダの設定 -->
  <directory .../>
  <directory .../>
  <directory .../>
  ...
</config>

database 要素:データベースの設定

データベースのタイプや JDBC ドライバ、接続先 URL の指定などを行います。

type 属性
データベースの種類を指定します。内蔵データベースの場合は "sql92" を指定します。
driver 属性
JDBC ドライバを指定します。
url 属性
接続先データベースへの URL を指定します。
user 属性
接続先データベースのユーザー名を指定します。
password 属性
接続先データベースのパスワードを指定します。
quoteid 属性
SQL文における識別子の区切り文字(quote.id)を指定します。 例えば、'"' を指定した場合は、「select * from "juser" where id > 0」のようなSQL文が実行されます。
quotewhere 属性
SQL文におけるWHERE句の区切り文字(quote.where)を指定します。 例えば、'"'を指定した場合は、「select * from juser where "id > 0"」のようなSQL文が実行されます。
quoteidinwhere 属性
SQL文におけるWHERE句内の識別子の区切り文字(quote.idInWhere)を指定します。 例えば、'"'を指定した場合は、「select * from juser where "id" > 0」のようなSQL文が実行されます。

directory 要素:各フォルダの設定

エクスポートされたフォルダを起点とした、相対的なフォルダ名と、各種属性を指定します。

起点は wagbyapp/webapps/<プロジェクトID>/WEB-INF/export です。

具体的には、次のようになります。

  <directory group="data hibernate"
     tablename="customer"
     storage="hibernate"
     createddlfilename="createddl/customer.ddl"
     dropddlfilename="dropddl/customer.ddl"
     importxslfilename="importxsl/customer.xsl"
     convertimportxslfilename="convertimportxsl/customer.xsl">
    init/customer
  </directory>
group 属性

この sql 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sql 要素をまとめて実行することができます。次の値が設定されます。

  • data : エンドユーザによって開発されたという意味を示すマーカーです。
  • jfc_data : Wagby 内部で管理されているモデルを示すマーカーです。
  • hibernate : Hibernate を用いてデータを格納します。エンドユーザによって開発されたモデルが該当します。

この group 属性値を利用して、InitLoader を操作することができます。対象となるグループに限定した操作を行えるようになります。

tablename 属性
データベースのテーブル名が指定されて実行された場合に、一致した sql 要素のみを実行します。
storage 属性
"hibernate" を指定できます。
createddlfilename 属性
テーブル作成時の DDL ファイルを指定します。
dropddlfilename 属性
テーブル削除時の DDL ファイルを指定します。
importxslfilename 属性
この属性にXSLファイルのファイル名を指定することにより、import時に読み込んだXMLを指定したXSLで処理を行います。指定がない場合は読み込んだXMLでそのまま処理します。initdb.xmlファイルの親ディレクトリからの相対パスを指定します。
convertimportxslfilename 属性
過去データを移行して新システムにデータを格納するタイミングで、ここに指定した XSLT を(フィルタとして)通すことができます。

sql 要素:実行する SQL 文の設定

InitLoader 実行時に、同時に実行する SQL 文を指定します。例えばビューの定義など、さまざまな SQL 文(一文)を指定します。

  <sql group="create_view jfc_data"
       tablename="staff">
    create view ...
  </sql>

複数の SQL 文を実行させる場合は、当該要素を複数回、記述してください。または記述するSQLをセミコロン「;」で区切って記述します。

MySQL を利用する場合、セミコロンで区切った複数のSQLを認識させるための設定が必要です。[詳細...]
group 属性
この sql 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sql 要素をまとめて実行することができます。
tablename 属性
データベースのテーブル名が指定されて実行された場合に、一致した sql 要素のみを実行します。
acceptcommand属性、denycommand属性を共に指定していない場合は、デフォルト値として
acceptcommand="sql sql-auto-before" denycommand="all"
を使用します。

sequence 要素:順序の作成

InitLoader 実行時に、同時に実行する CREATE SEQUENCE 文を指定します。 具体的には、次のようになります。

  <sequence group="create_seq jfc_data"
       tablename="jprincipal" tablemaxcolumn="id"
       seqname="jprincipal_seq" start="1000"/>
group 属性
この sequence 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sequence 要素をまとめて実行することができます。
tablename 属性
データベースのテーブル名が指定されて実行された場合に、一致した sequence 要素のみを実行します。
tablemaxcolumn 属性
tablename属性とこの属性で指定されたテーブルの列の最大値を取得し、start属性で指定された値より大きい場合は、この値をSTARTの値とします。tablename属性又はこの属性が指定されてない場合は、start属性の指定に従います。
seqname 属性
作成するSEQUENCEの名前を指定します。必ず指定されなければなりません。
increment 属性、minvalue 属性、maxvalue 属性、start 属性、cache 属性
CREATE SEQUENCE文のINCREMENT, MINVALUE, MAXVALUE, START, CACHEに対応します。指定されてない場合は、省略されます。
cycle 属性
CREATE SEQUENCE文のCYCLEに対応します。値がtrueの場合にのみ指定されます。指定されてない場合又は値がfalseの場合は、省略されます。
acceptcommand属性、denycommand属性を共に指定していない場合は、デフォルト値として
acceptcommand="sequence" denycommand="all"
を使用します。

拡張ファイル initdb_ex.xml

initdb.xml はモデル定義から常に自動生成されます。一方、initdb_ex.xml は開発者が作成し、customize フォルダに配置します。この仕組みを用いることで、モデル定義によらず、InitLoader 時に常に実行してほしい SQL を 用意することができます。

使い方

  1. $(DEVHOME)/customize/webapp/WEB-INF/export/conf/initdb_ex.xml を用意します。(*1)
  2. ファイルの中身を作成します。例を示します。
    <?xml version="1.0" encoding="UTF-8"?>
      <sql group="data"
            acceptcommand="sql sql-create-after" denycommand="all"
            tablename="seq">
    INSERT INTO &quot;seq&quot; VALUES('report_seq1',1);
    INSERT INTO &quot;seq&quot; VALUES('report_seq2',1);
      </sql>
    
  3. ビルドします。ビルド後は wagbyapp/webapps/wagby/WEB-INF/export/conf/initdb_ex.xml に配置されます。(*1)
  4. init_db.bat を実行すると、ここに記述した内容が (initdb.xml のあとに) 実行されます。

利用例 : サポート > リポジトリ > 業務ロジック > 主キー > 順序を定義する

1. R7.12.6/R8.0.4 より前のバージョンの Wagby で Java 9 以上の環境を利用する場合、initdb_ex.xml を $(DEVHOME)/customize/tomcat/bin に配置してください。ビルド後は wagbyapp/bin にコピーされます。(R7.12.6/R8.0.4 以降の Wagby では、この手順は不要です。)

運用時の注意

  • SQLを直接、記述するため、お使いのデータベースに依存します。データベース変更時は、このファイルに記述した内容も見直してください。
  • ストアドプロシージャを定義することもできます。CREATE OR REPLACE PROCEDURE... など。ここに含める内容は XML で使える文字に限定されます。文字実体参照を適切に利用してください。具体的には「<」「>」「&」「"」「'」といった文字をそれぞれ「&lt;」「&gt;」「&amp;」「&quot;」「&apos;」に置換してください。
  • テーブル名を囲むダブルクォートの有無などは、ご利用になるデータベースによって異なります。
  • Designerで「テーブルを作成しない」とした場合、Web画面からのインポート操作では、当該モデルに関するSQL実行はスキップされます。コンソールからinit_db.batスクリプトを実行した場合は、initdb_ex.xml のすべての内容が常に実行されます。
  • 記述内容に誤りがあった場合は、その記述は実行されません。例えば tablename 属性のスペルミスや、余分な空白が入っていた、という場合などです。