View の自動生成

概要

テーブルだけでなく、View (ビュー)に対応する Entity や ConditionBean も自動生成することができます。 DBFlute からすれば、View は単なる(PKのない)テーブルと言えます。

デフォルトの設定で、自動生成されるようになっているため、特別意識せずとも利用できます。

自動生成対象にする設定

DBFluteプロパティでは、databaseInfoMap.dfprop の objectTypeTargetList にて "VIEW" が指定されていれば自動生成されるようになります。デフォルトの設定で含まれているため、何も設定せずとも自動生成されます。

マテリアライズドビュー(MaterializedView)も通常の View と全く同じように扱われます。

ちなみに、ReplaceSchema のスキーマ初期化では、View もマテリアライズドビューもしっかり削除されます。また、replaceSchemaDefinitionMap.dfprop の objectTypeTargetList にて ReplaceSchema 固有の設定が指定できます。

PKを設定する

View にはPK制約がありません。ですが、View を構成するSQLの内容によっては、結果セットのユニーク性が明確な場合もあるでしょう。 また、"更新可能View" であれば、PK制約情報を付与して Behavior で更新したいでしょう。

その場合は additionalPrimaryKeyMap.dfprop にて、PK 情報を付与することで、DBFlute上では PK を持ったテーブルのように扱うことができるようになります。

FKを設定する

View にはFK制約がありません。View と通常のテーブルのデータを関連付けてオブジェクトグラフの Entity として扱いたい場合は、 additionalForeignKeyMap.dfprop にて FK 情報を付与すると良いでしょう。

ユニーク制約を設定する

View にはユニーク制約(UQ)がありません。View と通常のテーブルのデータを one-to-one として関連付けたい場合は、オブジェクトグラフの Entity additionalUniqueKeyMap.dfprop にて UQ 情報を付与すると良いでしょう。

利用できないテーブルのラップに

これはバッドノウハウですが、例えば、DBFluteでは利用できない(非推奨の)カラム名を持ったテーブルに対し、View 経由でアクセスするという回避にも利用できます。 通常は非推奨のテーブル名やカラム名を直す方が良いです、どうしてもDBを変更できない事情があるような場合に有効です。DBFlute で利用できる形式のカラム名に構成を直した View を作成し、参照先のテーブルを自動生成対象外にします。

dfprop - tableExceptList