1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IntelliJ IDEA データソース登録せずに、デバッグ中だけ DB が手元に出る

1
Last updated at Posted at 2026-09-08

はじめに

Docker Compose で PostgreSQL を立てて Spring Boot アプリを開発中に「いま DB に何が入っているのか」を確認したいことがありませんか、そのたびに IntelliJ IDEA の Database ツールウィンドウでデータソースを都度追加。ホスト、ポート、ユーザー名、パスワードの同じ作業です。

Spring Debugger プラグインを入れたら、この作業がなくなりました。デバッグ実行すると、接続が自動で現れます。

今回はspring-petclinic で実際に試した記録を書きました。

ポートが毎回変わるので、登録しても次の起動で使えない

自分の環境では、Docker Compose はポートマッピングのホスト側を省略すると空いているポートが自動で割り当てられます。

postgres:
  image: postgres:18.4
  ports:
    - "5432"    # ホスト側を書かない = ランダム割り当て

petclinic のリポジトリに入っているのは - "5432:5432" で、ホスト側を固定で押さえる書き方です。手元ではこの1行だけを変えています。

image.png

この状態で 4 回起動して、ホスト側に割り当てられたポートを記録しました。

1回目  59960
2回目  59981
3回目  53747
4回目  59059

毎回違います。Database ツールウィンドウに登録しても、次の起動で変わります。
また私の環境には PostgreSQL がネイティブインストールされていて、標準ポートの 5432 を常時占有しています。

環境

バージョン
IntelliJ IDEA Ultimate 2026.2
Spring Debugger プラグイン 262.8665.176
spring-petclinic Spring Boot 4.1.0
PostgreSQL postgres:18.4(Docker 公式イメージ)
Docker Desktop Server 27.4.0
OS Windows 11

やったこと

  1. Settings | Plugins | Marketplace で「Spring Debugger」を検索してインストール、IDE を再起動
    image.png

  2. spring-petclinic をプロジェクトとして開く

  3. PostgresIntegrationTestsmain メソッドを Debug 実行

3 番目のクラスは petclinic に最初から入っているものです。中身はこうなっています。

public static void main(String[] args) {
    new SpringApplicationBuilder(PetClinicApplication.class)
        .profiles("postgres")
        .properties("spring.docker.compose.start.arguments=postgres")
        .run(args);
}

Spring Boot 3.1 で入った spring-boot-docker-compose モジュールが、アプリ起動時に docker-compose.ymlpostgres サービスを立ち上げ、割り当てられたポートを読んで接続情報を組み立てます。こちらも設定を書く必要がありません。

image.png

結果

Database ツールウィンドウに、実行構成名の下に現れました。

PostgresIntegrationTests
  └ jdbc:postgresql://127.0.0.1:53747/petclinic [DEBUG]

末尾の [DEBUG] が Spring Debugger が登録した印です。ポート 53747 は、この起動で Compose が割り当てたものです。

同じタイミングで docker ps を叩くと一致していました。

spring-petclinic-postgres-1   postgres:18.4   0.0.0.0:53747->5432/tcp

ローカルの PostgreSQL(5432)ではなく、コンテナを掴んでいます。イントロスペクション結果のバージョン文字列も裏付けになりました。

PostgreSQL 18.4 (Debian 18.4-1.pgdg13+1)

Debian が入っているのは Docker 公式イメージのビルドだからで、Windows 版のネイティブインストールならこの表記になりません。

ツリーを展開してテーブルを開くと、owners に 10 件。コンテナに docker exec して psql で直接引いた結果と 1 件ずつ突き合わせて一致しました。同期にかかった時間は通知に「2 秒 763 ms」と出ていました。

image.png

ここまで、接続設定は一行も書いていません。

使ってみて分かったこと

初回は JDBC ドライバのダウンロードが要る

接続は現れたのに、ツリーを展開しても何も出てきませんでした。原因は IntelliJ 側に PostgreSQL の JDBC ドライバが無かったことです。
アプリが使うドライバ(Maven 依存)と、Database ツールウィンドウが使うドライバは別物でした。

通知に出ていた「ドライバーファイルのダウンロード」を押すと 42.7.13 が入り、そのあとツールウィンドウの更新ボタン(⟳)を一度押したらツリーが開きました。

ユーザーはデバッグ中にデータベースツールウィンドウの更新ボタンをクリックすることで、検出されたデータベースのテーブル表示やSQLクエリ実行が可能になります
https://www.jetbrains.com/ja-jp/help/idea/spring-debugger.html

停止すると消える

アプリを止めると接続はツリーから消えます。.idea/dataSources.xml を確認したところ、エントリだけでなくファイルごと無くなっていました。

デバッグ中だけ存在する一時的なものなので、永続的なデータソース管理の代わりにはなりません。普段使いの接続は別途登録しておく必要があります。

まとめ

Docker Compose で DB を立てて Spring Boot を書いている人にはいかがでしょうか。とくに刺さるのは、ポートが固定されていて共有の設定を自由に変えられない場合です。ホスト側を浮かせてしまえば、その環境で 5432 を握っている何かと取り合いになりません。浮かせた代わりに「起動ごとに調べて登録し直す」作業を、このプラグインが引き取ります。

私にとってよかったのは「いまどの DB につながっているのか」が一目で分かるようになったことでした。設定ファイルを読んでも答えが出ない種類の問いに、ツールウィンドウの一行が答えてくれます。ローカルの PostgreSQL とコンテナを取り違えたまま気づかない、といった事故が起きにくくなりました。

ナットウシステムからのお知らせ

弊社は JetBrains 製品に関するご質問、ご相談等を受け付けております。弊社のXまたはメールでご連絡ください。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?