Spring BootでローカルDBに接続する方法を解説!PostgreSQLとMySQLの設定例まとめ
生徒
「Spring Bootでローカル環境のデータベースに接続するには、どうすればいいんですか?」
先生
「ローカルでPostgreSQLやMySQLを使う場合、application.propertiesに必要な設定を書くだけで簡単に接続できますよ。」
生徒
「なるほど。じゃあ、それぞれの設定の書き方を教えてもらえますか?」
先生
「もちろんです。PostgreSQLとMySQLの両方で解説していきましょう。」
1. Spring Bootでローカルデータベースに接続する準備
Spring Bootでは、ローカル環境でPostgreSQL(ポストグレスキューエル)やMySQL(マイエスキューエル)といったリレーショナルデータベースに簡単に接続することができます。事前に以下の準備をしておきましょう。
- ローカル環境にPostgreSQLまたはMySQLがインストール済みであること
- 対象のデータベースとユーザーが作成済みであること
- Spring Bootプロジェクトに依存ライブラリを追加済みであること
2. PostgreSQLに接続する場合の設定例
まずは、PostgreSQLに接続するためのapplication.propertiesファイルの設定例を見てみましょう。ローカルのPostgreSQLに接続するには、以下のように記述します。
spring.datasource.url=jdbc:postgresql://localhost:5432/sampledb
spring.datasource.username=postgres
spring.datasource.password=your_password
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
上記では、localhostの5432ポートにあるsampledbというデータベースに、postgresユーザーで接続しています。
3. MySQLに接続する場合の設定例
次に、MySQL(MariaDBでも同様)のローカル接続設定です。こちらもapplication.propertiesファイルに記述します。
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
serverTimezone=UTCの指定は、MySQL 8系でタイムゾーンの警告が出るのを防ぐために入れています。
4. Mavenで必要な依存関係を追加する
Spring Bootでデータベースに接続するには、Mavenプロジェクトであればpom.xmlに依存ライブラリを追加する必要があります。
PostgreSQLの依存関係は以下のようになります。
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
</dependency>
MySQLの依存関係はこちらです。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
5. application.ymlでの設定例
application.propertiesの代わりにapplication.ymlを使うことも可能です。可読性を高めたい場合はこちらをおすすめします。
PostgreSQLのapplication.ymlは以下のようになります。
spring:
datasource:
url: jdbc:postgresql://localhost:5432/sampledb
username: postgres
password: your_password
driver-class-name: org.postgresql.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
6. Spring Bootの自動設定と挙動確認
Spring Bootでは、上記の設定さえ整っていれば、アプリケーション起動時に自動的にデータベースへ接続し、テーブルの自動作成やデータの永続化が行えるようになります。
接続が成功しているかは、ログに次のような出力があるかで確認できます。
HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
HHH000397: Using ASTQueryTranslatorFactory
また、起動中にエラーが出た場合は、ポート番号やユーザー名・パスワード・データベース名が正しいか、ファイアウォールでブロックされていないかを確認しましょう。
7. よくあるエラーとその対処法
Spring Bootでローカルのデータベースに接続する際、以下のようなエラーに遭遇することがあります。
- org.postgresql.util.PSQLException: 認証失敗 → ユーザー名・パスワードの誤りを確認
- Communications link failure: MySQLが起動していない、またはポートが違う
- Unknown database: 該当するデータベースが存在していない → 事前に作成する必要あり
これらのエラーは、設定ファイルのタイポやデータベース側の設定ミスで発生することが多いので、焦らずひとつひとつ確認しましょう。
8. テスト用のEntityとRepositoryの例
データベース接続を確認するために、簡単な@EntityとJpaRepositoryを用意すると良いでしょう。
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
}
public interface UserRepository extends JpaRepository<User, Long> {
}
これで起動後に自動的にuserテーブルが作成されれば、接続成功です。
まとめ
Spring Bootでローカル環境のデータベースに接続するための設定は、基本的な記述を正しく押さえることでとても扱いやすくなります。とくにPostgreSQLとMySQLは業務でも広く使われているため、接続URLの書き方、ユーザー名やパスワードの指定、ドライバーの設定、さらにHibernateの方言(ダイアレクト)の設定など、環境に応じた正しい記述を理解することが重要です。どちらのデータベースもSpring Bootの自動設定と非常に相性が良く、必要な依存関係を追加し、`application.properties`や`application.yml`に記述するだけで、テーブルの作成やSQLログの表示が簡単に行えます。 また、接続に関するエラーの多くはポート番号・データベース名・資格情報の誤りが原因であることが多いため、設定を丁寧に確認する習慣が安定した開発に直結します。実務では開発環境でPostgreSQLを利用し、本番ではMySQLを採用するケースなどもあり、それぞれの設定に柔軟に対応できる力が求められます。Spring Bootでは環境ごとに設定ファイルを切り替えることも容易であるため、ローカルとステージング、本番の接続先を使い分ける際にも重要な知識となっていきます。 また、接続確認のために簡単なEntityクラスやRepositoryを作成して動作を確かめることは、Spring BootとJPAの理解を深めるうえでも有効です。テーブルが正しく自動生成され、正常に永続化処理が行えるかを確認することで、設定ミスを素早く発見でき、開発全体の効率を高めることにもつながります。このようにローカルDBの接続設定は、アプリケーション開発の基盤となる重要な工程であり、確実に押さえておくことでより高度な開発作業にスムーズに進むことができます。
接続確認に使えるサンプルコード
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Entity
public class Product {
@Id
@GeneratedValue
private Long id;
private String title;
}
public interface ProductRepository extends JpaRepository<Product, Long> {
}
上記のようなEntityとRepositoryを用意し、アプリケーション起動後にデータベース上へproductテーブルが作成されていれば、Spring Bootによるローカルデータベースへの接続は正しく機能しています。他にもSQLログを表示させる設定を行えば、実際にどのようなクエリが発行されているのかを確認でき、アプリケーション内部の動作理解がより深まります。
PostgreSQLとMySQLではドライバーやダイアレクトの指定が異なるため、それぞれの特徴を理解したうえで設定を正しく書き分けることが安定した開発に欠かせません。ローカル開発環境は安全に検証できる場なので、設定変更や接続テストを繰り返し行いながら理解を深めていくことが成長につながります。
生徒
「PostgreSQLとMySQLの設定の違いがよく分かりました。接続URLやドライバーの記述を間違えないことが大事なんですね。」
先生
「その通りです。URLの書き方、ポート番号、ユーザー名、パスワード、ダイアレクトの指定などが正しく書けていれば、Spring Bootはとてもスムーズにデータベースへ接続してくれますよ。」
生徒
「EntityとRepositoryを使った接続確認も実践的ですね。テーブルがちゃんと作られると安心できます。」
先生
「確かに動作確認は大切です。Spring Bootの自動設定を理解しておくと、アプリケーションの構造や処理の流れも自然とつかめるようになりますから、今後の開発にも役立ちますよ。」
生徒
「ありがとうございました!自分の環境でもPostgreSQLとMySQLの両方で試してみます!」