Liquibase は、hbm2ddl の代わりとして使用するのが最適です。こうすることで、データベースがそのデータに適合する状態にあるときにデータの取り込みを行うことができ、後でチェンジセットが挿入されたデータを他の変更とともにアップグレードできます。最初に hbm2ddl を実行し、次に liquibase を実行してデータを入力する場合、常に挿入データ構造を変更する必要があります。
hibernate と liquibase を使用できる 1 つの方法は、開発中に ant または maven で liquibase diff ツールを使用して、データベースと hibernate モデルの違いに基づいて変更ログ ファイルに追加することです。常に期待どおりであるとは限らないため、行おうとしていることを確認してください (列の名前を変更する代わりに、列を削除して追加することを決定します)。変更ログ ファイルが作成されたら、たとえば、アプリの起動時に liquibase Spring Bean に渡すことで、他の変更ログ ファイルと同じように実行できます。liquibase は hbm2ddl を使用して、liquibase が現在のデータベースと比較する休止状態の「データベース」を生成するため、hbm2ddl と liquibase の両方を使用する必要はありません。
これにより、手順は次のとおりです。
- 休止状態のモデルに変更を加える
- hibernate と既存のデータベースの間で liquibase diff を実行します
- 新しい liquibase changeSet を調べます
- データベースに対して liquibase スクリプトを実行する
唯一の問題は、特に 1.9 では、ant やコマンド ラインのように、hibernate diff ツールが maven でサポートされない可能性があることです。
liquibase diff ツールを使用したくない場合は、変更ごとに手動で changeSets を変更ログ ファイルにいつでも追加できます。XML 形式は、手動で簡単に操作できるように設計されています。この場合の手順は次のとおりです。
- 休止状態のモデルに変更を加える
- 必要な changeSet を変更ログ ファイルに追加します
- データベースに対して liquibase スクリプトを実行する
- テストと繰り返し