Spring BootでDB接続設定をする方法を完全ガイド!初心者でもわかるapplication.ymlの書き方
新人
「Spring Bootでデータベースと接続するには、どうすればいいんでしょうか?URLやユーザー名をどこかに書くんですか?」
先輩
「Spring Bootでは、application.ymlという設定ファイルにDB接続情報を書くのが基本なんだ。URLやユーザー名、パスワードなどをそこに書いておくことで、アプリが自動で接続してくれるよ。」
新人
「へえ、アプリ側が全部やってくれるんですね。設定ファイルの書き方を詳しく知りたいです!」
先輩
「よし、それじゃあSpring BootでのDB接続の基本から順番に見ていこう。」
1. Spring BootとDB接続の基本
Spring Bootは、JavaでWebアプリケーションを作るための便利なフレームワークです。その中でも、データベースとの連携は非常に重要な機能です。ユーザー情報の保存、商品一覧の取得、注文内容の記録など、すべてのWebアプリはデータベースとやり取りを行います。
Spring Bootでは、設定ファイルに接続情報を書くだけで、アプリケーション起動時に自動的にデータベースに接続してくれます。これは「プロパティ設定」と呼ばれ、特にapplication.ymlというファイルに記述するのが一般的です。
この設定を行うことで、Spring Bootが自動的にDataSourceという仕組みを通してDB接続を管理してくれます。初心者でも簡単に使えるように設計されています。
2. DB接続のためのプロパティ設定とは?
Spring Bootでは、DB接続のためにいくつかの「プロパティ」を設定する必要があります。主に以下の3つです。
- 接続URL(どのデータベースに接続するかを指定)
- ユーザー名(DBにログインするためのID)
- パスワード(ログインに使うパスワード)
これらの設定をapplication.ymlというファイルに書くことで、Spring Bootは自動的にデータベースへアクセスできるようになります。
例えば、H2データベースやMySQLなどを使う場合、それぞれの接続URLの形式が異なるので注意が必要です。以下に、よく使われるデータベースの接続例を紹介します。
H2データベースの場合:
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
MySQLデータベースの場合:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: password123
このように、spring.datasourceというキーの下に、必要なプロパティを階層的に書いていきます。YAML形式はインデント(字下げ)が大切なので、スペースを正しく入れることもポイントです。
また、Spring Bootはspring.datasourceというプロパティ名を自動で認識してくれるので、特別な設定やコードを書かなくてもDB接続が行えます。
デフォルトではH2データベースが組み込まれているため、特に何も書かなくてもアプリは起動しますが、MySQLなど外部のデータベースを使いたい場合は、明示的にプロパティ設定が必要になります。
補足:なぜapplication.ymlに書くのか?
Spring Bootには設定ファイルがいくつかありますが、その中でもapplication.ymlは読みやすく、階層構造で整理できるため人気です。
同じ内容をapplication.propertiesでも書けますが、application.ymlのほうが複雑な構造をスッキリ表現できるメリットがあります。
たとえば、下記のように複数の設定がきれいに並びます。
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/shop
username: shop_user
password: shop_pass
このように記述しておくと、Spring Bootは自動的に指定されたポート番号とデータベース接続情報を使ってアプリを起動します。
3. application.ymlファイルの作成手順(Pleiadesでの操作)
それでは実際にapplication.ymlファイルをPleiades(Eclipse)で作成していきましょう。プロジェクト作成後、src/main/resourcesフォルダ内に設定ファイルを置く必要があります。ここがSpring Bootで設定を読み込む決まりの場所になっています。
手順は次のとおりです:
- Pleiadesを起動し、作成済みのSpring Bootプロジェクトを開く。
src/main/resourcesフォルダを右クリックして、新規 > ファイルを選択。application.ymlとファイル名を入力して「完了」。
ここで注意したいのは、ファイル名を必ずapplication.ymlにすることです。拡張子が.yamlや.ymlでも動作しますが、Spring Bootのデフォルトはapplication.ymlです。
また、間違ってapplication.propertiesと入力しないようにしましょう。設定ファイルの形式が異なりますので、記述方法も変わってしまいます。
ファイルが作成できたら、次に実際の設定内容を書いていきます。
4. DB接続プロパティの書き方(URL・ユーザー・パスワードの記述例)
application.ymlファイルに書く内容は、接続するデータベースに応じて変わります。ここではMySQLに接続する例で説明します。以下のようにspring.datasourceというキーの下に、接続URL・ユーザー名・パスワードなどを記述します。
spring:
datasource:
url: jdbc:mysql://localhost:3306/sampledb
driver-class-name: com.mysql.cj.jdbc.Driver
username: test_user
password: test_pass
ここで書かれているプロパティについて、それぞれ解説します。
- url:接続するデータベースの場所を示します。ここではローカルPCの3306番ポートにある
sampledbというデータベースです。 - driver-class-name:JDBCドライバのクラス名です。MySQLの場合は
com.mysql.cj.jdbc.Driverを使用します。 - username:データベースに接続するためのユーザー名です。
- password:ユーザー名に対応するパスワードです。
これらの情報は、データベース管理者から共有されるか、自分でMySQLを構築したときに作成したユーザー名とパスワードを使用します。
接続先のURLやユーザー名が誤っていると、Spring Bootアプリケーションの起動時にエラーになります。そのため、打ち間違いやスペースの混入などには注意しましょう。
また、パスワードを設定ファイルに直接書くのは避けたい場合は、環境変数やSpringのプロファイル機能を使う方法もありますが、今回は基本の書き方としてapplication.ymlに直接記述する形式を紹介しました。
5. 実際にDB接続が行われるかどうかの確認方法
設定が終わったら、実際にSpring Bootが正しくDB接続しているかを確認しましょう。確認するには、Spring BootアプリケーションをPleiades上で起動し、ログに表示される内容をチェックします。
具体的には、以下の手順で行います。
- プロジェクトの
Application.javaを右クリックして、「Spring Boot アプリケーションとして実行」を選ぶ。 - コンソールに表示されるログを確認する。
正常にDB接続できている場合、ログの中に以下のような内容が表示されます。
Connected to database [MySQL - 8.0.30] at jdbc:mysql://localhost:3306/sampledb
また、接続に失敗している場合は、次のようなエラーメッセージが表示されます。
Cannot create PoolableConnectionFactory (Access denied for user 'test_user'@'localhost' (using password: YES))
このようなメッセージが出た場合は、ユーザー名やパスワードが正しいか、データベースが起動しているかを再確認してください。
接続できている場合は、Spring Bootアプリケーションの中からリポジトリやサービスを使って、データの読み書きが可能になります。
まだリポジトリなどのクラスを作成していない場合でも、接続成功のログが表示されていれば、application.ymlのDB接続設定が正しく動いている証拠です。
また、DB接続を使う際には、依存関係としてSpring Data JPAやJDBC Driverが含まれている必要があります。Pleiadesでプロジェクト作成時にチェックを入れた場合は、自動でbuild.gradleに記述されているはずです。
最終的には、画面上にデータを表示したり、DBにデータを保存したりする処理を行うために、@ControllerやService、Repositoryなどのクラスと連携するようにしていきます。
6. よくあるエラーとその対処法(記述ミス・接続先DBの指定間違いなど)
Spring Bootでapplication.ymlにDB接続情報を設定するとき、初心者がつまずきやすいポイントがいくつかあります。ここでは、よくあるエラーとその対処方法を紹介します。
① インデントのミス
YAML形式ではスペースによるインデントが非常に重要です。タブではなく半角スペースを使わないと、Spring Bootが正しく読み取れず、以下のようなエラーが出ることがあります。
Cannot load configuration class: Mapping values are not allowed here
このエラーが出たら、まずapplication.ymlのインデントが正しく揃っているか確認してください。例えば次のような書き方はNGです。
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
この場合、datasource以下のキーがspringの階層下として認識されません。必ず次のようにスペースで字下げしてください。
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
② URLの記述ミス
DB接続URLの書き方も間違えやすいポイントです。たとえば、次のようなスペルミスやポート番号のミスで接続エラーになります。
url: jdbc:mysql://localhost:3360/testdb
MySQLのデフォルトポートは3306なので、3360と書いてしまうと接続できません。接続できない場合は、使用しているDBのポート番号やサービス名を確認しましょう。
③ ユーザー名やパスワードの誤り
データベースにログインするためのusernameやpasswordも正確に記述する必要があります。誤っていると次のようなエラーが表示されます。
Access denied for user 'root'@'localhost' (using password: YES)
このエラーは、ユーザー名またはパスワードが違っていることを示しています。特にコピー&ペーストしたときに余計な空白が入っていないかも確認しましょう。
④ JDBCドライバが見つからない
以下のようなエラーが出る場合は、Gradleの依存関係にJDBCドライバが含まれていない可能性があります。
Cannot load driver class: com.mysql.cj.jdbc.Driver
この場合、Pleiadesでプロジェクトを作成するときに「MySQL Driver」にチェックを入れ忘れていないか確認してください。入れ忘れた場合はbuild.gradleに依存関係を手動で追加する必要があります。
7. application.propertiesとの違いに軽く触れる
Spring Bootでは、DB接続設定をapplication.ymlだけでなく、application.propertiesという形式でも記述できます。どちらを使っても同じように動作しますが、書き方に違いがあります。
application.ymlの例:
spring:
datasource:
url: jdbc:mysql://localhost:3306/sampledb
username: user
password: pass
application.propertiesの例:
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=user
spring.datasource.password=pass
application.ymlはインデントによって階層を表現できるため、見やすく整理しやすいのが特徴です。複雑な設定や多階層な構成になる場合は、yml形式のほうが適しています。
一方で、application.propertiesはシンプルな構成であれば直感的に書けるため、小規模なプロジェクトでは好まれることもあります。
PleiadesでSpring Bootプロジェクトを新規作成した際は、デフォルトでapplication.propertiesが作られていることもありますが、開発者の好みに応じてapplication.ymlに置き換えて使用しても問題ありません。
8. 最後に、DB接続設定の流れを簡単におさらい
ここまで、Spring Bootでapplication.ymlを使ったDB接続設定について詳しく解説してきました。最後に、設定の流れを初心者向けに簡単に振り返っておきましょう。
- Pleiadesを起動し、Spring Bootプロジェクトを作成する。
src/main/resourcesにapplication.ymlファイルを新規作成する。spring.datasource.url、username、passwordなど、必要なプロパティを記述する。- 記述した内容にスペルミスやインデントミスがないかをしっかり確認する。
- アプリケーションをPleiades上で実行し、ログに「接続成功」のメッセージが出ることを確認する。
この一連の流れができれば、Spring BootでのDB接続の基本はマスターしたと言えます。今後はこの設定をベースに、@ControllerやService、Repositoryなどのクラスを作成して、実際にデータベースとやりとりする処理へ進んでいきましょう。
application.ymlは、プロジェクト全体の設定を管理する大事なファイルです。まずはDB接続からしっかり理解して、設定ファイルの扱いに慣れていくことが、Spring Bootアプリ開発の第一歩になります。
まとめ
この記事では、Spring BootでDB接続設定を行う方法について、 初心者の方でも理解できるように、application.ymlの書き方を中心に詳しく解説してきました。 Spring Bootでは、データベース接続のために大量のコードを書く必要はなく、 設定ファイルに必要な情報を正しく記述するだけで、 アプリケーション起動時に自動でDB接続が行われるという点が大きな特徴です。
特に重要だったのは、spring.datasourceというプロパティ配下に、 接続URL、ユーザー名、パスワード、ドライバクラス名を正しく書くことでした。 application.ymlはインデントによって階層構造を表現するため、 スペースの数や配置を間違えるとエラーにつながる点も、 初心者が必ず押さえておくべきポイントです。 この部分を理解することで、 Spring Boot DB接続設定の基礎はほぼ身についたと言えます。
また、Pleiades環境でSpring Bootプロジェクトを作成し、 Gradleを使って依存関係を管理する流れも重要でした。 JDBCドライバやSpring Data JPAなどの依存関係が正しく追加されていなければ、 application.ymlを正しく書いてもDB接続は成功しません。 そのため、設定ファイルとbuild.gradleの両方が連携して動いている、 という意識を持つことが大切です。
ログの確認も非常に重要なポイントでした。 Spring Bootでは、アプリケーション起動時にコンソールへログが出力されるため、 DB接続が成功しているか、失敗しているかをすぐに判断できます。 エラーメッセージを怖がらずに読み、 URLやユーザー名、パスワード、ポート番号、インデントなどを一つずつ確認することで、 多くのトラブルは解決できます。 ログを味方につけることが、Spring Boot初心者から一歩進むための大きな鍵です。
今回の記事で覚えるべきことは、 Spring Bootではapplication.ymlを使ってDB接続設定を行うこと、 設定内容はシンプルでも正確さが重要であること、 そしてログを確認しながら動作を判断するという基本的な流れです。 一方で、環境変数やプロファイル、セキュリティを意識したパスワード管理などは、 今は無理に覚える必要はありません。 まずは基本を確実に身につけることが、長く役立つ知識につながります。
spring:
datasource:
url: jdbc:mysql://localhost:3306/sampledb
username: app_user
password: app_pass
driver-class-name: com.mysql.cj.jdbc.Driver
上記のような最小構成の設定を書けるようになるだけでも、 Spring BootでのDB接続設定は大きく前進します。 この形をベースにして、 将来的にJPAやトランザクション管理、パフォーマンス調整などを学んでいくと、 より実務に近いSpring Boot開発ができるようになります。
新人
「application.ymlにDB接続情報を書くだけで、 Spring Bootが自動でデータベースに接続してくれるのが、 最初は信じられなかったです。」
先輩
「最初はそう感じるよね。 でも、それがSpring Bootの強みなんだ。 面倒な設定をフレームワークが肩代わりしてくれる。」
新人
「ログを見てDB接続が成功しているか確認する、 という流れも少しずつ分かってきました。」
先輩
「それは大きな成長だね。 Spring Bootでは、ログを読む力がつくと、 エラー対応や原因調査が一気に楽になるよ。」
新人
「まずはDB接続設定をしっかり理解して、 次はRepositoryやServiceにも挑戦してみたいです。」
先輩
「その流れが一番いいね。 今日学んだapplication.ymlの設定は、 これから先もずっと使う知識だから、 自信を持って進んでいこう。」