カテゴリ: Spring 更新日: 2025/09/19

Spring Bootのapplication.ymlでデータベース接続設定を書く方法【初心者向け】

application.ymlにDB接続設定を書く方法
application.ymlにDB接続設定を書く方法

新人と先輩の会話形式で理解しよう

新人

「Spring Bootでデータベースに接続するには、どこに設定を書けばいいんですか?」

先輩

application.ymlっていう設定ファイルに書くのが一般的だよ。」

新人

「そのファイルって何のためにあるんですか?」

先輩

「じゃあまずはapplication.ymlについて説明するね。」

1. application.ymlとは?

1. application.ymlとは?
1. application.ymlとは?

application.ymlは、Spring Bootアプリケーションの動作を設定するためのファイルです。データベース接続、ポート番号、ログ出力レベルなど、さまざまな設定を記述できます。

YAML形式は、インデントによって階層構造を表現する書き方なので、可読性が高く、複数の設定をグループ化しやすいという利点があります。

このファイルは、src/main/resourcesフォルダ内に配置します。設定を書くことで、Spring Bootが自動的に内容を読み取り、適用してくれます。

例えば、MySQLに接続するための記述例は以下の通りです:


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testdb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

このように、spring.datasourceというキーの下に接続情報を書きます。スペースの数に注意して書かないとエラーになります。

2. application.propertiesとの違い

2. application.propertiesとの違い
2. application.propertiesとの違い

Spring Bootでは、application.ymlと同じ役割を持つapplication.propertiesというファイルも使えます。どちらを使っても構いませんが、それぞれに特徴があります。

application.propertiesの例:


spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

application.propertiesは、キーと値を「=」でつなぐシンプルな形式です。しかし、階層構造がわかりづらく、設定が増えると見にくくなります。

一方、application.ymlは階層構造を視覚的に理解しやすく、設定内容がまとまりやすいという利点があります。以下は同じ設定をapplication.ymlで書いた例です:


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testdb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

このように、初心者でも読みやすく、プロジェクトの設定内容を全体で把握しやすいのがapplication.ymlのメリットです。

3. application.ymlに記述するデータベース接続設定の基本

3. application.ymlに記述するデータベース接続設定の基本
3. application.ymlに記述するデータベース接続設定の基本

Spring Bootでデータベースに接続するには、application.ymlファイルに必要な情報を記述します。この設定ファイルは、アプリケーションの構成全体を管理する重要な役割を持っています。特に、データベース接続に関する設定は、プロジェクトを正しく動作させるために欠かせません。

データベース接続のために必要な主な情報は、以下の4つです。

  • 接続URL(データベースの場所を示す)
  • ユーザー名(接続用アカウント)
  • パスワード(接続用アカウントのパスワード)
  • ドライバクラス名(JDBCドライバのクラス)

これらの設定をapplication.ymlに書くことで、Spring Bootが自動的にデータベースと接続できるようになります。

設定ファイルは、プロジェクト作成時にsrc/main/resourcesフォルダに自動で作られます。もし無い場合は、自分で作成しても構いません。

4. JDBC接続のURL、ユーザー名、パスワード、ドライバクラスなどの書き方

4. JDBC接続のURL、ユーザー名、パスワード、ドライバクラスなどの書き方
4. JDBC接続のURL、ユーザー名、パスワード、ドライバクラスなどの書き方

ここでは、実際にapplication.ymlに記述するSpring Boot用の設定内容について詳しく見ていきます。対象のデータベースはMySQLを想定しています。


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

・url:これはJDBC接続URLと呼ばれ、どのデータベースに接続するかを指定します。たとえば、localhostはローカル環境、3306はMySQLの標準ポート、mydbはデータベース名です。

・username / password:データベースにアクセスするための認証情報です。開発環境ではrootを使うことが多いですが、実際の業務では専用のユーザーを使うのが一般的です。

・driver-class-name:これはMySQLのJDBCドライバのクラス名で、正しく記載しないとエラーになります。

これらの設定は、スペースによる階層に気をつけて記述します。YAML形式はスペースの位置が重要で、間違えると正しく読み込まれません。

ちなみに、これらの記述はSpring Bootが内部で利用するため、DataSourceの定義などはコードで記述する必要はありません。

5. 書き方のミスによるエラー例とその対処法

5. 書き方のミスによるエラー例とその対処法
5. 書き方のミスによるエラー例とその対処法

application.ymlでデータベース接続の設定を書く際、初心者がよくつまずくポイントがあります。ここでは、よくあるミスとその対処方法を紹介します。

エラー1:インデントのズレ

YAMLは、スペースの数によって階層を表します。スペースが1つ足りなかったり、多かったりすると、Spring Bootが正しく設定を読み込めず、起動時にエラーになります。


spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb

このようにインデントがそろっていない場合は、以下のように修正します:


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb

エラー2:JDBC URLの書き間違い

URLが正しくないと、接続時にCommunicationsExceptionUnknownDatabaseなどのエラーが発生します。


jdbc:mysql://localhost/mydb

この例はポート番号が省略されており、正しく接続できないことがあります。下記のように修正しましょう。


jdbc:mysql://localhost:3306/mydb

エラー3:ドライバクラス名の記述ミス

ドライバ名を間違えると、ClassNotFoundExceptionが発生します。例えば以下のように書いてしまうとエラーになります。


com.mysql.jdbc.Driver

Spring Boot 2以降は以下のドライバクラス名を使う必要があります。


com.mysql.cj.jdbc.Driver

エラー4:ファイルの文字コードミス

Windows環境でファイルの文字コードがUTF-8以外になっていると、起動時に予期しないエラーになることがあります。Pleiades上でファイルを右クリックし、「プロパティ」→「リソース」→「テキストファイルエンコーディング」でUTF-8に設定されているか確認しましょう。

エラー5:Pleiadesで依存関係が抜けている

MySQLと接続するには、MySQL JDBC Driverが必要です。Pleiadesのプロジェクト作成時に「MySQL Driver」にチェックを入れていないと、接続エラーになります。後から追加する場合は、Pleiadesの「プロジェクトの設定」画面から依存関係を再設定しましょう。

6. application.ymlで環境ごとの設定を分ける方法(profilesを使った記述例)

6. application.ymlで環境ごとの設定を分ける方法(profilesを使った記述例)
6. application.ymlで環境ごとの設定を分ける方法(profilesを使った記述例)

Spring Bootでは、開発環境・本番環境など、環境ごとに設定を切り替えることができます。これを実現するのがプロファイル(profiles)の仕組みです。

application.ymlでは、プロファイルごとに設定を分けて記述することで、環境ごとの接続先や認証情報を切り替えることが可能です。これにより、安全性柔軟性が大きく向上します。

以下は、devprodという2つのプロファイルで設定を分けた例です:


spring:
  profiles:
    active: dev

---

spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: jdbc:mysql://localhost:3306/devdb
    username: devuser
    password: devpass
    driver-class-name: com.mysql.cj.jdbc.Driver

---

spring:
  config:
    activate:
      on-profile: prod
  datasource:
    url: jdbc:mysql://192.168.1.100:3306/proddb
    username: produser
    password: prodpass
    driver-class-name: com.mysql.cj.jdbc.Driver

このように書くことで、spring.profiles.activeで指定されたプロファイルに応じて、適切な設定が読み込まれます。開発中はdev、本番環境ではprodを指定することで、意図した接続先を使い分けられます。

特にデータベース接続のような重要な情報は、環境によって異なるため、application.ymlでプロファイルを明示的に管理することが非常に効果的です。

7. セキュリティ面の注意点(パスワードの管理、外部ファイル化など)

7. セキュリティ面の注意点(パスワードの管理、外部ファイル化など)
7. セキュリティ面の注意点(パスワードの管理、外部ファイル化など)

application.ymlにデータベース接続設定を記述する際に、注意すべき重要な点がセキュリティです。特に、パスワードやユーザー名をそのまま書くことにはリスクがあります。

開発中は一時的に直接記述しても問題ありませんが、プロジェクトをチームで共有したり、リポジトリにアップする場合には、以下の方法でセキュリティを確保することが推奨されます。

● 外部ファイルで管理する

環境変数や別のプロパティファイルを使って、パスワード情報を外部に分離することで、漏洩リスクを減らせます。

たとえば、application.yml内で以下のように記述し、環境変数で値を渡します:


spring:
  datasource:
    url: ${DB_URL}
    username: ${DB_USER}
    password: ${DB_PASSWORD}
    driver-class-name: com.mysql.cj.jdbc.Driver

この場合、OSやIDEの実行設定で環境変数DB_URLDB_USERDB_PASSWORDを指定する必要があります。Pleiadesの場合は、実行構成の「環境」タブから設定可能です。

● Git管理対象から除外する

もしどうしてもapplication.ymlにパスワードを記述する必要がある場合は、.gitignoreapplication.ymlを追加し、Gitでの管理対象から外すことで、外部流出を防げます。

● 暗号化ライブラリの利用

さらに強化したい場合は、Spring Cloud Configなどを使って、値を暗号化して管理する方法もあります。ただし、初心者にとっては設定が複雑になるため、まずは環境変数による外部化から始めるのがおすすめです。

8. application.ymlを使った接続設定の今後の拡張方法(Spring Data JPAとの連携など)

8. application.ymlを使った接続設定の今後の拡張方法(Spring Data JPAとの連携など)
8. application.ymlを使った接続設定の今後の拡張方法(Spring Data JPAとの連携など)

application.ymlは、単なる接続情報だけでなく、今後の開発に向けた機能拡張にも役立ちます。特に、Spring Data JPAと連携することで、データベースとのやり取りを簡潔に記述できます。

以下は、JPAを有効にし、SQLのログを出力する設定例です。


spring:
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        format_sql: true

・ddl-autoは、テーブルの自動生成に関する設定です。updateにすると、エンティティクラスの定義に従ってテーブルが自動で更新されます。

・show-sqlは、実行されるSQLをコンソールに表示するための設定です。開発時のデバッグに役立ちます。

・format_sqlは、SQLを見やすく整形して表示する設定です。複雑なSQLでも読みやすくなります。

このようにapplication.ymlを使えば、接続設定だけでなく、Spring BootとJPAの動作を細かくコントロールできます。特にデータベース処理の自動化や簡略化には欠かせない存在です。

将来的に@Entity@Repositoryを使ってデータベース操作を行う際にも、この設定がベースになります。設定ファイルを整備しておくことで、アプリの拡張がスムーズに行えます。

最後に、設定ミスを防ぐためには、設定内容を定期的に見直し、ドキュメント化しておくことも重要です。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
JDBCとは?Javaでデータベースを使うしくみを初心者向けに解説
Springと他のフレームワーク(StrutsやJSF)との違いを初心者向けにわかりやすく解説!
Springのモジュール構成(DI・AOP・MVCなど)を紹介
Javaの論理演算子(&&, ||, !)の使い方を学ぼう
人気記事
No.1
Java&Spring記事人気No1
単体テストと結合テストの違いを理解しよう
No.2
Java&Spring記事人気No2
Javaとは?初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
SQLのサブクエリを完全ガイド!入れ子クエリの使い方を初心者向け解説
No.4
Java&Spring記事人気No4
SQLのトリガー(TRIGGER)を完全ガイド!初心者でもわかる自動処理の仕組み