http://d.hatena.ne.jp/jflute/20110405#c1302056414 のコメントに対する返答記事も兼ねて。 databaseInfoMap.dfprop の objectTypeTargetList プロパティ、 これは、そのアプリケーションにおいて、テーブルとして 取り扱うデータベースオブジェクトは何か、の定義。 テーブルはもちろん、ビュー、シノニム、エリアスなど。 要は、自動生成対象のオブジェクトってことですね。 ですが、ReplaceSchema に関して言うと、 スキーマ初期化時のドロップ対象のオブジェクトと言えます。 本当は、自動生成の機能と ReplaceSchema とで、 独立したプロパティにすべきだったかもしれませんが、 ほとんどの場合そこは一致するので、特に問題もなく 現状はこのような仕様となっています。 -> dfprop - objecttypetargetlist さて、コメントにあった話ですが、とあるビュー、 o 自動生成では対象外にしたい o ReplaceSchema では drop したい という要件になるかと思います。 objectTypeTargetList からビュー(VIEW)を外すと、 ReplaceSchema で drop されません。 ビュー(VIEW)を入れると(デフォルト)、自動生成されて しまいます。自動生成されても使わなければいいだけと 言えますが、使わないものはできれば自動生成したくない。 しかも今回は日本語テーブルということでなおさら。 三つ選択肢を挙げておきましょう。
{A} 自動生成したくないのがビュー全体なのか、 それとも、とあるビューだけなのか。 後者なら、そもそも objectTypeTargetList ではなく、 tableExceptList を利用すべきでしょう。 ビューが外したいんじゃなくて、そのオブジェクトが外したい。 -> dfprop - tableExceptList {B} ビューをとにかく自動生成したくない、でも、ビューを ReplaceSchemaとしては扱いたい、という状況であれば、 replaceSchemaDefinitionMap.dfprop の additionalDropMapList を利用すると良いでしょう。 テーブル削除時に、追加的にテーブルを削除することができます。 本来は、別スキーマのテーブルを削除するための機能ですが、 同じスキーマを指定しても全然構いません。 こちらの設定でビューだけを削除するようにしておけばOK。 -> dfprop - additionalDropMapList {C} さらには、自動生成と ReplaceSchema で参照する databaseInfoMap.dfprop を別にしてしまうことも できます。自動生成と ReplaceSchema であまりに インフラ的な面での違いが発生するようであれば、 これが一番わかりやすい選択肢です。 環境変数で切り替えます。 replace-schema.bat(.sh) で ReplaceSchema 独自の 環境変数を定義して切り替えるようにしてしまえば良いでしょう。 -> 環境タイプごとの dfprop ただ、他の目的でも環境タイプによる切り替えを利用する場合に、 ちょっと設定がどうしても冗長してしまうかもしれませんね。 (まあ、でもこれら dfprop だけならたいしたことないかな)
ひとまずは、id:Hnoss さん、どうでしょう? 個人的には、「ビューが自動生成したくない」ではなく、 「アプリで使わないオブジェクトを自動生成したくない」 と言えると思うので、"A" が一番良いのかなとは思います。 かなり多くの要らないビューがあって、名前にも統一性がない、 ということで設定しづらい可能性はありますが、それなら、 改善するにしても、objectTypeTargetList よりも tableExceptList をもっと柔軟なものにしていくのが 現実的なのかなと。 {追記} まあ、ただ ReplaceSchema は独立した領域の機能ではあるので、 今後のためにも ReplaceSchema 専用の objectTypeTargetList を 環境タイプとか使わずに指定できるようにしてもいいかなぁ... {追記} SYNONYMとかのことを考えると、完全に独立するのが良いとは 言えないので、上書き形式で調整できるようにしました。 replaceSchemaDefinitionMap.dfprop にて、 objectTypeTargetList を指定することで、ReplaceSchema のみ において有効なプロパティとなります。(0.9.8.2 より) @DBFlute, Java, DBFlute.NET, C#