データベースの設計、追加・修正など

Webアプリケーションでは、データベースを使うのが常套手段ですね。そして、オブジェクト指向とリレーショナルデータベースのインピーダンスミスマッチを解消する為に、O/Rマッピングと呼ばれる技術が現在主流になっていると認識しています。(この辺の詳しい事は、別途専門のサイトをご覧下さい。)そんなO/Rマッピングフレームワークの1つが、SeasarシリーズのS2Daoというプロダクトです。

といっても、まだマトモにいじったことがありませんw
このエントリーは、S2Daoをいじるために、どういう手順を踏もうかな、という初心者の思考を記したもので、決して的を射た内容では無いと思いますので要注意です。というか、これを見た識者の方々に助言を頂ければな、という魂胆です(汗)ので、何かおかしいことやお勧めがございましたら、是非教えて下さい。

  1. DB設計:私は、EclipseClay Database Modelingを使って、設計をします。
  2. DB作成:出来上がったモデルをClayを使ってSQLに吐き出し、テーブルのを作成します。
  3. Dao及びEntityクラスの作成:DoltengのDatabaseViewからデータベースを読み込み、DaoクラスとEntityクラスを生成します。
  4. Scaffoldの作成:同様に、Scaffoldを作成します。
  5. アプリケーションの作成:生成されたScaffoldを雛形・参考にして、アプリケーションを作成します。

ここまでは、概ね正解の手順だと思いますが、いかがでしょうか…。実は、この先で悩んでいます。

アプリケーションを作成しているうちに、テーブルの列をちょこっと修正・追加・削除したり、機能追加に伴って新たなテーブルを追加作成したりすることがあると思います。その場合の対処方法です。データベースの構造を大幅に変更した場合は、1から作成し直すべき(というか、大幅変更しないようにきちんと設計すべきw)だと思いますが、小規模な変更はよくあることだと思います。(というか、データベースは一度設計したら二度と変更しない、なんて事はあり得ないですよね…?)

Clayのモデルを修正して、新しい設計をしたとします。しかし、その変更を現状に反映させるSQLというのは自動生成できませんよね? ゼロからテーブルを作成するSQLしか生成できないと思います。ここは手動でSQLを書くしかないのでしょうか? それとも(私が)未知の自動化手段があるのでしょうか?

次に、(手動なり、未知の自動手段にて)新しいモデルをデータベースに適用できたとして、DaoやEntityクラスも手動で修正するんでしょうか? それとも、Dolteng DatabaseViewにて再度生成を行うと、上手く上書きしてくれるんでしょうか?(やったことがないので分かりません)

ちなみに、Seasarシリーズのプロダクトに、DBFluteS2Dao-CodeGenというのも発見したんですが、イマイチ使いこなせず…。まだ手を出しちゃいけないレベルなのかな、と考えてしまいました(汗)

以上、まだ全て想像で書いているので、その他にも悩みが出てくるかもしれませんが…。今悩んでいる事はこんな所です。
どちら様か、ご存知でしたら教えてください!