IntelliJ IDEA 2026.1 Help

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

Gradle/Maven プラグインなしで Liquibase 変更ログを実行する

JPA 構造タブでは、Liquibase 更新を実行し、SQL をプレビューする方法も提供します。 アップデートを実行するには、 Liquibase の更新 ボタンをクリックします。

  1. データベース ツールウィンドウで、データベースを右クリックし、 Liquibase の更新 を選択します。

    または、 Ctrl+Shift+A を押して Liquibase の更新 と入力します。

  2. 開いた Liquibase の更新 ダイアログで、次のパラメーターを設定します。

    • 変更ログファイルへのパス

    • 使用する DB 接続

    • Liquibase のコンテキストとラベル

    • 操作のログレベル

    liquibase-update
  3. 更新 をクリックして、構成されたオプションで Liquibase 更新コマンドを実行します。

    SQL の表示 をクリックして SQL ステートメントのプレビューを表示することもできます。

    sql-preview

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

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

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

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

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

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

    変更をクリックすると、変更履歴ファイル内の定義に移動します。 include タグと includeAll タグの場合は、含まれているファイル内の変更セットにリダイレクトされます。

構造ツールウィンドウ

Liquibase 設定

liquibase-settings

基本設定

IntelliJ IDEA では以下を指定できます:

  • 使用したい Liquibase のバージョン

  • 変更セットの作成者名

  • デフォルトのファイルタイプ。 次の 4 つのファイルタイプがサポートされています。

    • XML

    • SQL

    • YAML

    • JSON

変更ログテンプレート

空または差分の Liquibase 変更ログが作成されるたびに、IntelliJ IDEA はテンプレートに基づいてファイル名を生成します。 変更ログのプライマリ / セカンダリディレクトリと名前を設定できます。

正確な構成には、次の変数とマクロが使用できます。

  • #date([format]) – 指定された SimpleDateFormat(英語) の現在のシステム日付。 例: #date(\"yyyy-MM-dd\") は、2020-12-31 としてフォーマットされた日付を返します。

  • #increment([start], [step], [decimalFormat]) — 名前を一意に保つために使用される番号。 start 値は最初のファイルに使用され、次のファイルごとに段階的に増加します。 decimalFormat パラメーターは番号の DecimalFormat(英語) を指定します。 例: #increment(1.0, 0.1, \"#.0\") は、1.1、1.2、1.3 などの形式で値を返します。

  • semVer — プロジェクトのセマンティックバージョン (別名 SemVer) は、3 桁のシーケンス (Major.Minor.Patch)、オプションのプレリリースタグ、およびオプションのビルドメタタグを使用する、広く採用されているバージョンスキームです。 オブジェクトには次のメソッドが含まれています (例の完全バージョンは 1.2.3-SNAPSHOT+meta です)。

    • ${semVer.getRawVersion()}: 1.2.3-SNAPSHOT

    • ${semVer.getMajor()}: 1

    • ${semVer.getMinor()}: 2

    • ${semVer.getPatch()}: 3

    • ${semVer.getPreRelease()}: SNAPSHOT

    • ${semVer.getMeta()}: メタ

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>

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
2026 年 3 月 30 日