データベースの詳細最終更新日: 2020年8月10日

概要

「画面>その他>データベースの詳細」を指定することができます。

図1 データベースの詳細

テーブルを作成する

標準では有効となっています。この場合、モデルに対応するテーブルが作成されます。
この設定を無効にすると、テーブルが用意されません。正確には、利用データベースに対して CREATE TABLE 文を発行しません。(*1)

次の場合に利用できます。

*1 テーブルを作成しないと設定した場合でも、テーブル定義(DDL)は用意されます。DDLの詳細...

物理テーブル名

テーブルを作成し、かつ物理テーブル名を指定した場合、ここで指定されたテーブル名で CREATE TABLE 文を実行します。

テーブルを作成しないとし、かつ物理テーブル名を指定した場合、既存システムのテーブルを操作するようになります。

異なるモデルで同じテーブルを共有する

異なるモデル A,B をそれぞれ定義したとき、モデルBで「テーブルを作成しない」とし、かつ「物理テーブル名にモデルA」を指定することで、モデルAとBは同じテーブルを共有することになります。(*2)

*2 同様の仕組みに「サブモデル」があります。サブモデルを設定すると、Wagbyがメインモデルとサブモデルに関係がある、と解釈できるため、ロックやキャッシュの処理は適切に行われます。一方、サブモデル設定ではなく、単に物理テーブルを共有した場合、そのような対応は行われません。両方のモデルでの整合性の維持は、開発者が注意して行うようにしてください。[詳細...]

スキーマを指定することはできない

物理テーブル名にスキーマを含めることはできません。

代案として、データベースの「シノニム」が使う方法があります。例えば Oracle では、シノニムを使って別スキーマのテーブルを別名のテーブルとして扱える仕組みがあります。詳細はご利用のデータベースのマニュアルをご確認ください。

日本語テーブル名を指定する

物理テーブル名に日本語テーブル名を指定することができます。[Appendix > DDL > 文字エンコード...]

キャッシュを有効にする

Wagbyはデータベースから読み込んだ値をメモリにキャッシュします。これによりデータベース操作回数を減らし、パフォーマンスを向上させています。標準ではキャッシュは有効となっています。

注意

本設定を無効にすると、常にデータベースを操作して最新のデータを取得するようになります。パフォーマンスに影響があるため、理由がなければキャッシュは有効とすることを推奨します。

1リクエスト間のキャッシュは常に有効

キャッシュを無効にした場合でも、1リクエスト間(WebブラウザとWebサーバ間の通信のやりとり)で発生したデータベースとのやりとりはメモリにキャッシュされます。[詳細...]

モデルのキャッシュ情報を定期的に消去する

ジョブを使ってモデルのキャッシュ情報を定期的に消去することができます。

識別子の区切り文字

Wagby は標準で、SQL文における識別子の区切り文字を設定するようになっています。 詳細は"環境 > データベース > 識別子の区切り文字"をお読みください。

ロック方式

"ロック方式"をお読みください。

既存テーブルを再利用する場合の注意点

既存テーブルを再利用する場合の注意点をまとめました。

トラブルシューティング

必須項目の扱い

Wagbyで定義したモデルで「必須」とした項目で、実際には既存テーブル(またはビュー)側に NULL が存在していないかどうかを確認してください。Wagby は必須項目では NULL は存在しないという前提であるため、NULL が見つかると正しくデータを取得できず、エラーになります。

日付型項目の扱い

既存テーブルで日付を文字列で定義している場合があります。例: yyyyMMdd の 8文字。この場合、Wagby のモデル定義でも文字列とするしかありませんが、日付型の範囲検索やカレンダー補助入力機能が利用できなくなります。回避策として、既存テーブルのビューを定義し、データベースの関数を使って文字列から日付型へ置き換えることを検討してください。ビューで日付項目となっていれば、Wagbyの日付型を利用できるようになります。