Liquibase
IntelliJ IDEA バージョン 2024.1 より前は、一部の Liquibase 機能は JPA Buddy プラグイン でのみ利用できました。 次のビデオでは、これらの機能を Liquibase プラグインで利用する方法を紹介します。
対応する機能を有効にするには、プロジェクトに Liquibase 依存関係が含まれていることを確認してください。 また、変更ログをすばやく生成して実行したり、SQL ステートメントをプレビューしたりするためのさまざまなアクションも提供されます。
スキーマを初期化する
IntelliJ IDEA を使用すると、JPA エンティティで提供されるマッピングに基づいてデータベーススキーマを初期化できます。 現在のエンティティの DDL コマンドのセットが Liquibase 変更ログの形式で生成されます。
Ctrl+Shift+A を押して、 Liquibase 初期スキーマ の入力を開始します。
Liquibase の変更ログファイルを開き、 Alt+Insert を押して、 Liquibase 初期スキーマ を選択することもできます。 この場合、開いたファイルのパラメーターが 変更履歴プレビューウィンドウで使用されます。
データモデルに基づいて DDL スクリプトを生成するには、 モデル を選択し、対応する永続性ユニットを指定します。

IntelliJ IDEA には、選択したエンティティの変更に特化した移行スクリプトを作成するオプションがあります。 スコープ リストで 選択されたエンティティ をクリックし、 カスタムスコープ用のエンティティを選択 ウィンドウでエンティティを選択します。

変更ログのプレビューウィンドウ

変更ログを通常のファイルとして保存する場合は、次の構成オプションが利用可能になります。
ディレクトリ および ファイル名 フィールドは、生成される変更ログの場所を構成します。 指定した名前の変更ログがすでに存在する場合は、警告が表示され、その後、変更がその変更ログに追加されます。
次に含める、 フォルダーを含める、 コンテキストを含める を使用して、変更ログを別の変更ログに含めるかどうかを指定できます。 フォルダーを含める ボックスをオンにすると、現在の変更ログだけでなく、フォルダー全体の include ステートメントが生成されます。
ファイルタイプ ドロップダウンから、Liquibase が対応している 4 種類のファイル型(YAML、JSON、SQL、XML)のいずれかを選択でき、IntelliJ IDEA はその型で変更ログを生成します。
変更ログをスクラッチファイルとして保存する場合は、その名前と種類のみを構成できます。

ウィンドウの左側には、生成される変更セットのプレビューが表示されます。 各変更をクリックすると、どのように表示されるかを確認できます。 複数の変更を 1 つの変更セットに結合するか、無視するには、ドラッグアンドドロップするだけです。 プレビューウィンドウの左上隅には、結果の変更ログを変更するためのさまざまなアクションが含まれています。

次のアクションが提供されます。
変更ログの追加 — セカンダリ変更ログを作成する
変更セットの追加 — 選択した変更ログに新しい変更セットを作成します
変更ログから除去 オプション付き:
変更ログから除去 — 現在の変更ログから変更を削除するだけです
除去して無視 — 変更を削除して 無視 に追加すると、将来の変更セットからも除外されます
無視対象から復元 — 無視 の変更を変更ログに移動します
コンテキストの設定 (変更セット用)
ラベルの設定 (変更セット用)
他のアクションを表示 — 危険レベルに基づいてすべての変更を選択し、すべての変更を展開 / 折りたたむ
空の変更ログを作成する
プロジェクト ツールウィンドウで、 db/changelog ディレクトリを右クリックします。
新規 を選択(または Alt+Insert を押す)し、 Liquibase 変更ログ を選択します。

開いた 新規 Liquibase 変更ログ ダイアログで、変更ログファイルの XML または YAML 形式を選択します。
これにより、Liquibase ファイルテンプレートに基づいて新しいファイルが作成されます。 IDE 設定 (Ctrl+Alt+S) の で、使用可能なすべてのファイルテンプレートを確認できます。
IntelliJ IDEA は、Liquibase スキーマに対する検証、既知のパラメーターの提案、プロパティ宣言や インクルードファイルへのナビゲーションなど、XML および YAML Liquibase 変更ログファイルでのコーディング支援を提供します。
プライマリおよびセカンダリの変更ログ
IntelliJ IDEA を使用すると、変更をプライマリとセカンダリの 2 種類の変更ログに保存できます。 この機能の 1 つの使用例は、自動的に実行できる安全な変更と、注意が必要で手動で実行する必要がある変更を分離することです。
変更は、そのタイプ ( 内) によって自動的に分離できます。 あるいは、 変更ログの追加 アクションを使用して、プレビューウィンドウでセカンダリ変更ログを手動で作成することもできます。 その後、必要な変更セットを新しい変更ログにドラッグするだけです。
デフォルトでは、Primary と Secondary の変更ログは別々のディレクトリで生成され、プラグインの設定でカスタマイズできます。 IDE の設定内、 セクションで続きを読むことができます。
移行スクリプトを生成する
データベース接続が確立されていない場合は、 接続を作成します。
データベース ツールウィンドウで、データベースを右クリックし、 Liquibase 変更ログを作成する を選択します。

または、エディターで JPA エンティティを開き、次のいずれかを実行します。
ガターの
をクリックして Liquibase 変更ログを作成する を選択します。
キャレットをエンティティに置き、 Alt+Enter を押してインテンションアクションを呼び出し、 Liquibase 変更ログを作成する を選択します。
開いたダイアログで、ソース (データモデルの目的の状態) とターゲット (データモデルの古い状態) を選択します。
次のソースオプションから選択できます。
DB: 最新のデータベースがあり、別の DB を同じ状態に更新するための移行スクリプトを生成したい場合に使用する必要があります。
モデル: これを使用して、エンティティリレーションシップモデル (JPA エンティティ) の現在の状態と古い (ターゲット) 状態の違いを表す移行スクリプトを生成します。
ターゲットは次のように設定できます。
DB — ターゲット DB のスキーマが古いバージョンです。
スナップショット - 必要な状態がデータモデルのスナップショットに保存されている場合は、このオプションを使用します。 これは IntelliJ IDEA でも生成できます。
OK をクリックします。 IntelliJ IDEA はソースとターゲットの違いを分析し、 変更ログのプレビュー ダイアログを表示します。
変更ログを通常のファイルとして保存する場合は、次の構成オプションが利用可能になります。
ディレクトリ フィールドで、変更ログファイルを保存する場所を指定します。
ファイル名 フィールドに、生成された変更ログファイルの名前を入力します。
次に含める、 フォルダーを含める、 コンテキストを含める を使用して、変更ログを別の変更ログに含めるかどうかを指定できます。 フォルダーを含める チェックボックスを選択すると、現在の変更ログだけでなく、フォルダー全体の include ステートメントが生成されます。
ファイルタイプ リストで、Liquibase が対応している 4 種類のファイル型(YAML、JSON、SQL、XML)のいずれかを選択でき、IntelliJ IDEA はその型で変更ログを生成します。
変更ログをスクラッチファイルとして保存する場合は、 変更ログのプレビュー ダイアログの上部にある スクラッチファイル を選択し、その名前とタイプを指定します。

構造ツールウィンドウを使用して変更ログを移動する
Liquibase の変更ログファイルに多数の変更セットがある場合、 構造 ツールウィンドウの 論理ビューを使用すると、ファイルをすばやくプレビューし、ファイル内を移動できます。変更タイプが個別のノードとして表示され、必要に応じて展開して詳細を確認できます。 変更の種類は個別のノードとして表示され、展開すると詳細情報にアクセスできます。
論理ビューは、XML および YAML 変更ログファイルで使用できます。
エディターで変更ログファイルを開いた状態で、 構造 ツールウィンドウ () を開きます。
または、 Alt+7 を押します。
構造 ツールウィンドウで、 論理 タブを開きます。
変更をクリックすると、変更履歴ファイル内の定義に移動します。
includeタグとincludeAllタグの場合は、含まれているファイル内の変更セットにリダイレクトされます。

変更をデプロイする
チェンジログが準備できたら、専用の Liquibase 実行構成 を使ってアップデートをトリガーし、データベースとコードを同期できます。 この実行構成は、 実行ウィジェットや選択したツールウィンドウから起動できます。
実行ウィジェットからアップデートを実行する
ウィジェットで Liquibase 実行構成がすでに選択されている場合は、
実行 をクリックします。
または、 Shift+F10 を押します。
ウィジェットで他の構成が選択されている場合は、そのお名前をクリックする 表示されたポップアップで、Liquibase 実行構成を探し、その右側にある
実行 をクリックします。
または、 Alt+Shift+F10 を押します。 表示されたポップアップで、Liquibase 実行構成を選択します。
IntelliJ IDEA は 実行ツールウィンドウ で Liquibase 実行構成を起動します。
ツールウィンドウからアップデートを実行する
Liquibase 実行構成は以下のツールウィンドウから起動できます:
永続化ツールウィンドウ:
パーシステンスユニット、エンティティ、または Liquibase チェンジログを右クリックし、
Liquibase の更新を実行… を選択します。
データベースツールウィンドウ:
ツールバーに移動して
Liquibase の更新を実行… を選択する
データベース、スキーマ、またはテーブルを右クリックし、
Liquibase の更新を実行… を選択します。
IntelliJ IDEA は 実行ツールウィンドウ で Liquibase 実行構成を起動します。
ルートチェンジログからアップデートを実行する
ルートチェンジログファイルから、アプリケーションプロパティ内の spring.liquibase.change-log プロパティがそれを指している場合は、Liquibase 実行構成を直接起動できます。
ルートチェンジログファイルを開きます。
ガターで、
Liquibase の更新を実行… をクリックします。

IntelliJ IDEA は 実行ツールウィンドウ で Liquibase 実行構成を起動します。
Liquibase 実行構成
Liquibase 実行構成を使うと、アプリケーション全体を実行したりターミナルを使ったりせずに、接続中のデータベースへ変更をデプロイできます。 この構成は内部的に Liquibase update コマンドを実行します。
Liquibase 実行構成を作成する

実行構成オプション
項目 | 説明 |
|---|---|
名前 | 実行構成の名前を指定して、編集または実行時に他の構成の間ですばやく識別できるようにします。 |
プロジェクトファイルとして保存 | 他のチームメンバーと共有できるファイルに実行構成設定を保存します。 デフォルトの場所は .idea/runConfigurations です。 ただし、 .idea ディレクトリを共有したくない場合は、プロジェクト内の他のディレクトリに構成を保存できます。 デフォルトでは、このオプションは無効になっており、IntelliJ IDEA は実行構成設定を .idea/workspace.xml に保存します。 |
必須オプション
追加オプション
これらのオプションを実行構成に追加するには、ダイアログの右側で オプションを変更 を選択し、リストから該当するオプションを選択します。
項目 | 説明 |
|---|---|
コンテキスト | どのチェンジセットをアップデート時に Liquibase が実行するかを絞り込むために、 コンテキストフィルターを指定します。 複数指定する場合は、値をコンマで区切る |
ラベル | どのチェンジセットをアップデート時に Liquibase が実行するかを絞り込むために、 ラベルフィルターを指定します。 複数指定する場合は、値をコンマで区切る |
ログレベル | アップデート中にログに記録されるメッセージの最小重要度レベルを選択します。 この設定については Liquibase 公式ドキュメントで詳しく見ることができます。 |
Liquibase 設定

基本設定
IntelliJ IDEA では以下を指定できます:
使用したい Liquibase のバージョン
変更セットの作成者名
デフォルトのファイルタイプ。 次の 4 つのファイルタイプがサポートされています。
XML
SQL
YAML
JSON
変更ログテンプレート
空または差分の Liquibase 変更ログが作成されるたびに、IntelliJ IDEA はテンプレートに基づいてファイル名を生成します。 変更ログのプライマリ / セカンダリディレクトリと名前を設定できます。
正確な構成には、次の変数とマクロが使用できます。
#increment(<start>, <step>, <decimalFormat>):数値シーケンスを使ってバージョンを生成します。start:最初のマイグレーションのバージョン番号step:各バージョン番号を増やす値decimalFormat:バージョン番号のフォーマットに使用される DecimalFormat パターン
#date(<simpleDateFormat>):現在のシステム日付を使ってバージョンを生成します。simpleDateFormat:日付のフォーマットに使用される SimpleDateFormat パターン
${semVer.<getterMethod>}:プロジェクトのビルドファイルの セマンティックバージョンを使ってバージョンを生成します。getterMethod:セマンティックバージョンの特定セグメントを抽出するメソッドです。 1.2.3-SNAPSHOT+build4 バージョンの例はこちら:${semVer.getRawVersion()}:1.2.3-SNAPSHOT+build4${semVer.getMajor()}: 1${semVer.getMinor()}: 2${semVer.getPatch()}: 3${semVer.getPreRelease()}: SNAPSHOT
Db タイプ
ソフトウェアでは、いくつかの DBMS タイプのサポートを提供する必要がある場合があります。 この場合、DDL 変更を宣言するための DB 間ソリューションを提供する Liquibase が最適な選択肢です。 IntelliJ IDEA もこのソリューションをサポートしています。 DB 間変更ログを生成するときに、Liquibase プロパティを使用して各 DBMS の正しいデータ型を指定します。
異なる DBMS に対して個別の変更ログを作成する必要はありません。
変更セットテンプレート
変更セットテンプレートは、Liquibase を使用してデータベーススキーマの変更を指定するための標準化された形式を提供する事前定義された構造です。 これらのテンプレートは、一貫性があり再利用可能な変更セットを作成するための基盤として機能し、データベースデプロイ全体の統一性とメンテナンスの容易さを保証します。
IntelliJ IDEA は、変更セットを生成する際にテンプレートを適用する機能を提供します。 この機能により、さまざまなカスタマイズ可能な要素を組み込むことができます。
暗黙的なロールバックをサポートしていない変更セットに空のロールバックを追加する – このオプションは、 暗黙的なロールバックが不足している(英語)新しい変更セットに、TODO コメントを含む空のロールバックタグを自動的に追加します。
failOnError および runOnChange: IntelliJ IDEA は changeSet タグ内でよく使用される属性をサポートしており、ユーザーは
failOnErrorおよびrunOnChangeのデフォルト値を設定できます。前提条件を作成する – 各変更セットには特定の前提条件を含めることができます。 例:
tableExistsおよびcolumnExists前提条件タグがaddColumnステートメントに追加されます。
特定の Liquibase 変更セットではこのオプションが提供されない場合があることに注意することが重要です。 例: タグ procedureExists は createProcedure ステートメントでは使用できません。

以下は、ドロップテーブルチェンジセットに対して有効になっている 4 つの機能すべてを示す例です。
Spring プロジェクト向け追加機能
IntelliJ IDEA による標準の Liquibase サポートに加えて、 Springフレームワークをベースとしたプロジェクトでは追加の IDE 機能を活用できます。
チェンジログとチェンジセットのステータス
どのチェンジログがすでに適用されたかを確認したい場合は、通常、Liquibase の 変更トラッキングコマンドを実行するか、データベース上の チェンジログテーブルを確認する必要があります。 IntelliJ IDEA では、変更のステータスを直接 IDE 上に表示することで、より迅速な確認方法を提供します。
チェンジログファイル全体のステータスは プロジェクト ツールウィンドウ(Alt+1 )に表示されます。

各チェンジログは Liquibase ロゴ( )で表されており、そのステータスはロゴ右下の小さなアイコンで反映されます:
アイコン | 状況 |
|---|---|
そのチェンジログ内のすべてのチェンジセットがデータベースに正常に適用されました。 | |
チェンジログは実行されましたが、いずれかのチェンジセットが失敗しました。 ファイル名にマウスを合わせると、エラーの詳細が確認できます。 ![]() どのチェンジセットでエラーが発生したか確認するには、アンダーラインが付いたチェンジログをエディターで開き、ガター内の赤い感嘆符を探してください。 | |
(None) | 以下の場合、ステータスアイコンは表示されません:
|
特定のチェンジセットのステータスは、チェンジログファイルを開いた際にエディターガター内に表示されます。

JPA Buddy の機能
JPA Buddy プラグインをインストールすると、Liquibase のサポートがさらに強化されます。
JPA デザイナー
JPA デザイナー ツールウィンドウを使用すると、コードを生成および変更できます。
ツールウィンドウの上部 (JPA パレット) で、アクション (例: 作成) を選択し、要素 (例: テーブル) をダブルクリックします。
ツールウィンドウの下部 (JPA インスペクター) は、変更ログの選択された要素 (たとえば、changeSet) に適応し、その属性を変更できるようにします。
JPA デザイナーの詳細については、 エンティティデザイナー を参照してください。

エディターツールバー
エディターツールバーを使用すると、関連するアクションにすばやくアクセスできます。 次のものが含まれます。
JPA 構造で開いているファイルを選択するアクション
JPA パレットからのすべてのアクション
スキーマ変更ログの初期化アクション
差分変更ログアクション

JPA Buddy はデータモデルを理解し、可能な限り変更セットを事前に入力します。 また、JPA Inspector を使用すると、各変更ログ要素の属性を調べることができます。

トラブルシューティング
- チェンジログやチェンジセットがステータスアイコンなしで表示される
この機能は Spring プロジェクトでのみ利用できます。 プロジェクトで Spring を使っている場合は、次の点を確認してください:
プロジェクトのビルドファイルに Liquibase 依存関係を追加しました。
該当するデータベースに接続し、その接続が データベース ツールウィンドウで有効になっています。
構成ファイル( application.properties または application.yml )が以下の条件を満たしている:
spring.liquibase.change-logがルートチェンジログファイルを指しています。spring.liquibase.urlまたはspring.datasource.urlがデータベース接続に使用した URL と一致しています。
すでに Liquibase アップデートを実行し、その結果が データベースチェンジログテーブルに記録されています。

