DB変更が発生したら
DB変更が発生したら何をする?
DB変更が発生したときのDBFluteタスク実行の流れは以下のようになります。 アーキテクト(つまり誰か一人の人)が中心となって、ディベロッパーと連携をとりながら以下の作業を行っていきます。
1. ReplaceSchemaでDBスキーマ再作成 (+ AlterCheck)
ERDツールでDDL文を再生成した後、それを使ってDBスキーマ(ローカルDB)の再作成を行います。 マスタデータやテストデータにも影響がある場合は、エクセルデータも修正します。
運用後のDB変更であれば、AlterCheck も活用すると良いでしょう。(タイミングは任意です)
2. JDBCタスクでメタデータを更新
DBスキーマが最新になったので、DBFluteが保持しているメタデータを最新のものに更新します。
3. Docタスクで最新版のドキュメントを自動生成
SchemaHTML や HistoryHTML などを再自動生成します。
4. Generateタスクで最新版のクラスを自動生成
Entity や ConditionBean などを再自動生成し、DB変更の影響範囲、つまり、コンパイルエラーになる箇所を修正します。 業務的な影響範囲は、アーキテクト自身がバージョン管理システムにコミットする前に直すか、 コミットしてからディベロッパーに直してもらうかはポリシー次第、もしくは、状況次第です。
5. OutsideSqlTestで外だしSQLの影響範囲の検知と修正
SQLの文法レベルで露骨に影響するものに関しては、ここでタスクエラーとなるので、そのエラー内容をみて影響範囲を修正します。 あまりに影響範囲が多い場合、アーキテクト自身がバージョン管理システムにコミットする前に全てを直すか、 エラーが発生する状態のままコミットしてディベロッパーに直してもらうかはポリシー次第、もしくは、状況次第です。
OutsideSqlTestタスクは、Sql2Entityタスクでの実行対象外のSQLも対象となるので、 (次の)Sql2Entityタスクだけをやっていればいいというわけではありません。
6. Sql2Entityで外だしSQL構成の影響範囲の検知と修正
SQLの結果構成(select句)や検索条件に影響するものに関しては、CustomizeEntity や Parameterbean の再自動生成をして、DB変更の影響範囲、つまり、コンパイルエラーになる箇所を修正します。 業務的な影響範囲は、アーキテクト自身がバージョン管理システムにコミットする前に直すか、 コミットしてからディベロッパーに直してもらうかはポリシー次第、もしくは、状況次第です。
ReplaceSchemaのDDL、エクセルデータ、Docタスクの SchemaHTML や HistoryHTML、Generateで自動生成されたクラス、OutsideSqlTestで直した外だしSQL、Sql2Entityで 自動生成されたクラスなど、もろもろをバージョン管理システムへコミットします。
7. 自動単体テスト(JUnit)を全て実行
JUnit(など)で作成した自動単体テストを全て実行して、グリーンになることを確認します。 業務的な影響範囲でアーキテクト自身が直し切れない場合は、ディベロッパーに直してもらうことも考慮します。
8. 割り切ったもの以外の修正が終わったらコミット
アーキテクトだけでは直し切れない修正がある場合は、コミット後にディベロッパーにその旨をしっかり通知して直してもらいます。 ディベロッパーから修正報告があって、JUnitの単体テストなどが全て通るようになったらDB変更完了です。
9. ディベロッパーはバージョン管理システムから最新を
ディベロッパーはバージョン管理システムから最新のリソース(DDLやエクセルデータやソースファイルなど)を更新します。 ローカルDBだけは最新にはなっていないので(DB自体はバージョン管理システムで管理しないので)、ReplaceSchemaを叩きます。
割り切られた修正があれば、それぞれ自分が担当する修正を行いアーキテクトに報告をします。
これにてDB変更完了です。
一括で実行するタスク
DB変更が発生したらやるべきDBFluteタスクをまとめて実行するタスクがあります。