設定ファイル 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 要素:各フォルダの設定
エクスポートされたフォルダを起点とした、相対的なフォルダ名と、各種属性を指定します。
具体的には、次のようになります。
<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をセミコロン「;」で区切って記述します。
- group 属性
-
この sql 要素のグループ名を指定します。スペース区切りで複数記述することが可能です。コマンド実行時にグループ名に合致した sql 要素をまとめて実行することができます。
- tablename 属性
-
データベースのテーブル名が指定されて実行された場合に、一致した sql 要素のみを実行します。
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の場合は、省略されます。
拡張ファイル initdb_ex.xml
initdb.xml はモデル定義から常に自動生成されます。一方、initdb_ex.xml は開発者が作成し、customize フォルダに配置します。この仕組みを用いることで、モデル定義によらず、InitLoader 時に常に実行してほしい SQL を 用意することができます。
使い方
- $(DEVHOME)/customize/webapp/WEB-INF/export/conf/initdb_ex.xml を用意します。(*1)
- ファイルの中身を作成します。例を示します。
<?xml version="1.0" encoding="UTF-8"?>
<sql group="data"
acceptcommand="sql sql-create-after" denycommand="all"
tablename="seq">
INSERT INTO "seq" VALUES('report_seq1',1);
INSERT INTO "seq" VALUES('report_seq2',1);
</sql>
- ビルドします。ビルド後は wagbyapp/webapps/wagby/WEB-INF/export/conf/initdb_ex.xml に配置されます。(*1)
- init_db.bat を実行すると、ここに記述した内容が (initdb.xml のあとに) 実行されます。
利用例 : サポート > リポジトリ > 業務ロジック > 主キー > 順序を定義する
運用時の注意
- SQLを直接、記述するため、お使いのデータベースに依存します。データベース変更時は、このファイルに記述した内容も見直してください。
- ストアドプロシージャを定義することもできます。CREATE OR REPLACE PROCEDURE... など。ここに含める内容は XML で使える文字に限定されます。文字実体参照を適切に利用してください。具体的には「<」「>」「&」「"」「'」といった文字をそれぞれ「<」「>」「&」「"」「'」に置換してください。
- テーブル名を囲むダブルクォートの有無などは、ご利用になるデータベースによって異なります。
- Designerで「テーブルを作成しない」とした場合、Web画面からのインポート操作では、当該モデルに関するSQL実行はスキップされます。コンソールからinit_db.batスクリプトを実行した場合は、initdb_ex.xml のすべての内容が常に実行されます。
- 記述内容に誤りがあった場合は、その記述は実行されません。例えば tablename 属性のスペルミスや、余分な空白が入っていた、という場合などです。