IntelliJ IDEA 2026.2 Help

Liquibase

IntelliJ IDEA バージョン 2024.1 より前は、一部の Liquibase 機能は JPA Buddy プラグイン でのみ利用できました。 次のビデオでは、これらの機能を Liquibase プラグインで利用する方法を紹介します。

対応する機能を有効にするには、プロジェクトに Liquibase 依存関係が含まれていることを確認してください。 また、変更ログをすばやく生成して実行したり、SQL ステートメントをプレビューしたりするためのさまざまなアクションも提供されます。

<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> </dependency>
dependencies { implementation 'org.liquibase:liquibase-core' }
dependencies { implementation("org.liquibase:liquibase-core") }

スキーマを初期化する

IntelliJ IDEA を使用すると、JPA エンティティで提供されるマッピングに基づいてデータベーススキーマを初期化できます。 現在のエンティティの DDL コマンドのセットが Liquibase 変更ログの形式で生成されます。

  1. Ctrl+Shift+A を押して、 Liquibase 初期スキーマ の入力を開始します。

    Liquibase の変更ログファイルを開き、 Alt+Insert を押して、 Liquibase 初期スキーマ を選択することもできます。 この場合、開いたファイルのパラメーターが 変更履歴プレビューウィンドウで使用されます。

  2. データモデルに基づいて DDL スクリプトを生成するには、 モデル を選択し、対応する永続性ユニットを指定します。

    init-schema-changelog

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

    カスタムスコープ

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

changelog-preview

変更ログを通常のファイルとして保存する場合は、次の構成オプションが利用可能になります。

  • ディレクトリ および ファイル名 フィールドは、生成される変更ログの場所を構成します。 指定した名前の変更ログがすでに存在する場合は、警告が表示され、その後、変更がその変更ログに追加されます。

  • 次に含めるフォルダーを含めるコンテキストを含める を使用して、変更ログを別の変更ログに含めるかどうかを指定できます。 フォルダーを含める ボックスをオンにすると、現在の変更ログだけでなく、フォルダー全体の include ステートメントが生成されます。

  • ファイルタイプ ドロップダウンから、Liquibase が対応している 4 種類のファイル型(YAML、JSON、SQL、XML)のいずれかを選択でき、IntelliJ IDEA はその型で変更ログを生成します。

変更ログをスクラッチファイルとして保存する場合は、その名前と種類のみを構成できます。

liquibase-preview-scratch

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

add-changelog-action

次のアクションが提供されます。

  • 変更ログの追加 — セカンダリ変更ログを作成する

  • 変更セットの追加 — 選択した変更ログに新しい変更セットを作成します

  • 変更ログから除去 オプション付き:

    • 変更ログから除去 — 現在の変更ログから変更を削除するだけです

    • 除去して無視 — 変更を削除して 無視 に追加すると、将来の変更セットからも除外されます

    • 無視対象から復元無視 の変更を変更ログに移動します

  • コンテキストの設定 (変更セット用)

  • ラベルの設定 (変更セット用)

  • 他のアクションを表示 — 危険レベルに基づいてすべての変更を選択し、すべての変更を展開 / 折りたたむ

空の変更ログを作成する

  1. プロジェクト ツールウィンドウで、 db/changelog ディレクトリを右クリックします。

  2. 新規 を選択(または Alt+Insert を押す)し、 Liquibase 変更ログ を選択します。

    Liquibase 変更ログ
  3. 開いた 新規 Liquibase 変更ログ ダイアログで、変更ログファイルの XML または YAML 形式を選択します。

    これにより、Liquibase ファイルテンプレートに基づいて新しいファイルが作成されます。 IDE 設定 (Ctrl+Alt+S) の エディター | ファイルおよびコードテンプレート で、使用可能なすべてのファイルテンプレートを確認できます。

IntelliJ IDEA は、Liquibase スキーマに対する検証、既知のパラメーターの提案、プロパティ宣言や インクルードファイルへのナビゲーションなど、XML および YAML Liquibase 変更ログファイルでのコーディング支援を提供します。

プライマリおよびセカンダリの変更ログ

IntelliJ IDEA を使用すると、変更をプライマリとセカンダリの 2 種類の変更ログに保存できます。 この機能の 1 つの使用例は、自動的に実行できる安全な変更と、注意が必要で手動で実行する必要がある変更を分離することです。

変更は、そのタイプ (ツール | データベースのバージョニング | 差分変更 内) によって自動的に分離できます。 あるいは、 変更ログの追加 アクションを使用して、プレビューウィンドウでセカンダリ変更ログを手動で作成することもできます。 その後、必要な変更セットを新しい変更ログにドラッグするだけです。

デフォルトでは、Primary と Secondary の変更ログは別々のディレクトリで生成され、プラグインの設定でカスタマイズできます。 IDE の設定内、 ツール | データベースのバージョニング | Liquibase セクションで続きを読むことができます。

移行スクリプトを生成する

  1. データベース接続が確立されていない場合は、 接続を作成します

  2. データベース ツールウィンドウで、データベースを右クリックし、 Liquibase 変更ログを作成する を選択します。

    DB から JPA エンティティを作成する

    または、エディターで JPA エンティティを開き、次のいずれかを実行します。

    • ガターの JPA Entity icon をクリックして Liquibase 変更ログを作成する を選択します。

    • キャレットをエンティティに置き、 Alt+Enter を押してインテンションアクションを呼び出し、 Liquibase 変更ログを作成する を選択します。

  3. 開いたダイアログで、ソース (データモデルの目的の状態) とターゲット (データモデルの古い状態) を選択します。

    次のソースオプションから選択できます。

    • DB: 最新のデータベースがあり、別の DB を同じ状態に更新するための移行スクリプトを生成したい場合に使用する必要があります。

    • モデル: これを使用して、エンティティリレーションシップモデル (JPA エンティティ) の現在の状態と古い (ターゲット) 状態の違いを表す移行スクリプトを生成します。

    ターゲットは次のように設定できます。

    • DB — ターゲット DB のスキーマが古いバージョンです。

    • スナップショット - 必要な状態がデータモデルのスナップショットに保存されている場合は、このオプションを使用します。 これは IntelliJ IDEA でも生成できます。

  4. OK をクリックします。 IntelliJ IDEA はソースとターゲットの違いを分析し、 変更ログのプレビュー ダイアログを表示します。

    変更ログを通常のファイルとして保存する場合は、次の構成オプションが利用可能になります。

    • ディレクトリ フィールドで、変更ログファイルを保存する場所を指定します。

    • ファイル名 フィールドに、生成された変更ログファイルの名前を入力します。

    • 次に含めるフォルダーを含めるコンテキストを含める を使用して、変更ログを別の変更ログに含めるかどうかを指定できます。 フォルダーを含める チェックボックスを選択すると、現在の変更ログだけでなく、フォルダー全体の include ステートメントが生成されます。

    • ファイルタイプ リストで、Liquibase が対応している 4 種類のファイル型(YAML、JSON、SQL、XML)のいずれかを選択でき、IntelliJ IDEA はその型で変更ログを生成します。

    変更ログをスクラッチファイルとして保存する場合は、 変更ログのプレビュー ダイアログの上部にある スクラッチファイル を選択し、その名前とタイプを指定します。

    changelog-preview

構造ツールウィンドウを使用して変更ログを移動する

Liquibase の変更ログファイルに多数の変更セットがある場合、 構造 ツールウィンドウの 論理ビューを使用すると、ファイルをすばやくプレビューし、ファイル内を移動できます。変更タイプが個別のノードとして表示され、必要に応じて展開して詳細を確認できます。 変更の種類は個別のノードとして表示され、展開すると詳細情報にアクセスできます。

論理ビューは、XML および YAML 変更ログファイルで使用できます。

  1. エディターで変更ログファイルを開いた状態で、 構造 ツールウィンドウ (表示 | ツールウィンドウ | 構造) を開きます。

    または、 Alt+7 を押します。

  2. 構造 ツールウィンドウで、 論理 タブを開きます。

    変更をクリックすると、変更履歴ファイル内の定義に移動します。 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 実行構成を直接起動できます。

  1. ルートチェンジログファイルを開きます。

  2. ガターで、 Liquibase の更新を実行… をクリックします。

    ガター内の Liquibase 実行更新アイコンの位置

IntelliJ IDEA は 実行ツールウィンドウ で Liquibase 実行構成を起動します。

Liquibase 実行構成

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

Liquibase 実行構成を作成する

  1. 実行 / デバッグ構成 ダイアログを開きます:

    • メインツールバーで 実行ウィジェットをクリックし、 構成の編集… を選択します。

    • あるいは、 実行 | 構成の編集… に進みます。

  2. ダイアログの左側で 新しい構成を追加 | Liquibase を選択します。

  3. 実行構成オプションを設定する

Liquibase 実行構成オプション

実行構成オプション

項目

説明

名前

実行構成の名前を指定して、編集または実行時に他の構成の間ですばやく識別できるようにします。

プロジェクトファイルとして保存

他のチームメンバーと共有できるファイルに実行構成設定を保存します。 デフォルトの場所は .idea/runConfigurations です。 ただし、 .idea ディレクトリを共有したくない場合は、プロジェクト内の他のディレクトリに構成を保存できます。

デフォルトでは、このオプションは無効になっており、IntelliJ IDEA は実行構成設定を .idea/workspace.xml に保存します。

必須オプション

項目

説明

ルートの変更ログファイル

ルートチェンジログファイルへのパスを指定します。

DB 接続

チェンジログを実行する際に Liquibase がどのデータベースをターゲットにするかを指定します。

既存の データソースデータベース ツールウィンドウから選択するか、 をクリックして新規作成してください。

追加オプション

これらのオプションを実行構成に追加するには、ダイアログの右側で オプションを変更 を選択し、リストから該当するオプションを選択します。

項目

説明

コンテキスト

どのチェンジセットをアップデート時に Liquibase が実行するかを絞り込むために、 コンテキストフィルターを指定します。

複数指定する場合は、値をコンマで区切る

ラベル

どのチェンジセットをアップデート時に Liquibase が実行するかを絞り込むために、 ラベルフィルターを指定します。

複数指定する場合は、値をコンマで区切る

ログレベル

アップデート中にログに記録されるメッセージの最小重要度レベルを選択します。

この設定については Liquibase 公式ドキュメントで詳しく見ることができます。

Liquibase 設定

liquibase-settings

基本設定

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 の正しいデータ型を指定します。

<property name="string.type" value="varchar" dbms="postgresql"/> <property name="string.type" value="nvarchar" dbms="mssql"/> <changeSet id="1622118750064-2" author="jpa-buddy"> <createTable tableName="owners"> <column autoIncrement="true" name="id" type="INT"> <constraints nullable="false" primaryKey="true" primaryKeyName="PK_OWNERS"/> </column> <column name="first_name" type="${string.type}(255)"/> <column name="last_name" type="${string.type}(255)"/> <column name="address" type="${string.type}(255)"/> <column name="city" type="${string.type}(255)"/> </createTable> </changeSet>

異なる DBMS に対して個別の変更ログを作成する必要はありません。

変更セットテンプレート

変更セットテンプレートは、Liquibase を使用してデータベーススキーマの変更を指定するための標準化された形式を提供する事前定義された構造です。 これらのテンプレートは、一貫性があり再利用可能な変更セットを作成するための基盤として機能し、データベースデプロイ全体の統一性とメンテナンスの容易さを保証します。

IntelliJ IDEA は、変更セットを生成する際にテンプレートを適用する機能を提供します。 この機能により、さまざまなカスタマイズ可能な要素を組み込むことができます。

  1. 暗黙的なロールバックをサポートしていない変更セットに空のロールバックを追加する – このオプションは、 暗黙的なロールバックが不足している(英語)新しい変更セットに、TODO コメントを含む空のロールバックタグを自動的に追加します。

  2. failOnError および runOnChange: IntelliJ IDEA は changeSet タグ内でよく使用される属性をサポートしており、ユーザーは failOnError および runOnChange のデフォルト値を設定できます。

  3. 前提条件を作成する – 各変更セットには特定の前提条件を含めることができます。 例: tableExists および columnExists 前提条件タグが addColumn ステートメントに追加されます。

<changeSet id="1685085536452-1" author="jpa-buddy"> <preConditions> <tableExists tableName="customer"/> <not> <columnExists tableName="customer" columnName="id"/> </not> </preConditions> <addColumn tableName="customer"> <column name="id" type="BIGINT"> <constraints nullable="false" primaryKey="true" primaryKeyName="pk_customer"/> </column> </addColumn> </changeSet>

特定の Liquibase 変更セットではこのオプションが提供されない場合があることに注意することが重要です。 例: タグ procedureExistscreateProcedure ステートメントでは使用できません。

changeset-templates.png

以下は、ドロップテーブルチェンジセットに対して有効になっている 4 つの機能すべてを示す例です。

<changeSet id="1680594632747-1" author="jpa-buddy" runOnChange="true" failOnError="true"> <preConditions> <tableExists tableName="customer"/> </preConditions> <dropTable tableName="customer"/> <rollback><!--TODO--></rollback> </changeSet>

Spring プロジェクト向け追加機能

IntelliJ IDEA による標準の Liquibase サポートに加えて、 Springフレームワークをベースとしたプロジェクトでは追加の IDE 機能を活用できます。

チェンジログとチェンジセットのステータス

どのチェンジログがすでに適用されたかを確認したい場合は、通常、Liquibase の 変更トラッキングコマンドを実行するか、データベース上の チェンジログテーブルを確認する必要があります。 IntelliJ IDEA では、変更のステータスを直接 IDE 上に表示することで、より迅速な確認方法を提供します。

チェンジログファイル全体のステータスは プロジェクト ツールウィンドウ(Alt+1 )に表示されます。

適用済みマイグレーションにはチェックマーク、失敗したマイグレーションには感嘆符が付いた、Project ツールウィンドウ内の Liquibase アイコン

各チェンジログは Liquibase ロゴ( )で表されており、そのステータスはロゴ右下の小さなアイコンで反映されます:

アイコン

状況

緑色のチェックマークアイコン

そのチェンジログ内のすべてのチェンジセットがデータベースに正常に適用されました。

赤い感嘆符アイコン

チェンジログは実行されましたが、いずれかのチェンジセットが失敗しました。

ファイル名にマウスを合わせると、エラーの詳細が確認できます。

アンダーラインが引かれたチェンジログにマウスを重ねた時に Project ツールウィンドウに表示されるエラー詳細

どのチェンジセットでエラーが発生したか確認するには、アンダーラインが付いたチェンジログをエディターで開き、ガター内の赤い感嘆符を探してください。

チェンジセットの横、エディターガター内の赤い感嘆符

(None)

以下の場合、ステータスアイコンは表示されません:

  • チェンジログはまだ実行されていません。

  • チェンジログは以前に実行されましたが、いずれかのチェンジセットが失敗しました。

特定のチェンジセットのステータスは、チェンジログファイルを開いた際にエディターガター内に表示されます。

開いているチェンジログファイルのエディターガター内のステータスアイコン

JPA Buddy の機能

JPA Buddy プラグインをインストールすると、Liquibase のサポートがさらに強化されます。

JPA デザイナー

JPA デザイナー ツールウィンドウを使用すると、コードを生成および変更できます。

ツールウィンドウの上部 (JPA パレット) で、アクション (例: 作成) を選択し、要素 (例: テーブル) をダブルクリックします。

ツールウィンドウの下部 (JPA インスペクター) は、変更ログの選択された要素 (たとえば、changeSet) に適応し、その属性を変更できるようにします。

JPA デザイナーの詳細については、 エンティティデザイナー を参照してください。

JPA デザイナー

エディターツールバー

エディターツールバーを使用すると、関連するアクションにすばやくアクセスできます。 次のものが含まれます。

  1. JPA 構造で開いているファイルを選択するアクション

  2. JPA パレットからのすべてのアクション

  3. スキーマ変更ログの初期化アクション

  4. 差分変更ログアクション

jpa-palette-db-actions

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

liquibase-changelog-preview

トラブルシューティング

チェンジログやチェンジセットがステータスアイコンなしで表示される

この機能は Spring プロジェクトでのみ利用できます。 プロジェクトで Spring を使っている場合は、次の点を確認してください:

2026 年 7 月 14 日