Spring Bootでデータベースに接続するには?初心者でもわかるJDBCの基本
新人
「Spring Bootを使ってデータベースに接続したいんですけど、どうやればいいのかよく分かりません…」
先輩
「最初は混乱するよね。でもSpring Bootはデータベース接続が簡単にできるように工夫されてるから、基本を押さえれば安心だよ。」
新人
「JDBCってよく聞きますが、それも関係してるんですか?」
先輩
「うん、JDBCはデータベースとやり取りするための基本的な仕組みだよ。まずはSpring BootとJDBCの関係から見ていこう!」
1. Spring Bootとは?初心者向けにやさしく解説
Spring Boot(スプリングブート)は、Javaでアプリケーションを素早く開発できるようにするためのフレームワークです。初心者が難しい設定をしなくても簡単にWebアプリケーションを作成できるように、多くの機能があらかじめ用意されています。
特に「データベース接続」や「Webサーバーの起動」など、面倒な初期設定がほとんど不要なのが魅力です。
pleiades(プレアデス)を使えば、GUI操作でSpring Bootプロジェクトを作成できるので、初心者でも迷わず進められます。
Spring Bootを使うときに大事なのは、以下のようなポイントです。
- 自動構成(Auto Configuration)で初期設定が簡単
- 組み込みのTomcatサーバーで簡単に実行
- データベース接続やJDBCの設定も最小限でOK
2. JDBCを使ったデータベース接続の全体像とは?
JDBC(ジェイディービーシー)とは、「Java Database Connectivity」の略で、Javaアプリケーションからデータベースに接続して操作するための仕組みです。Spring Bootでは、このJDBCをベースにして、データベース接続を簡単に行えるようにしています。
ここでは、Spring BootでJDBCを使ってデータベースに接続する流れを、初心者にも分かりやすく紹介します。
まず最初に、接続したいデータベース(MySQLやPostgreSQLなど)をインストール・起動しておきます。テスト用であればローカル環境に簡単なデータベースを用意すれば十分です。
pleiades上で「Spring Starter Project」を選択し、新しいプロジェクトを作成します。ビルドツールはGradleを選びましょう。Mavenではなく、Gradleが指定されています。
プロジェクト作成時の依存関係選択画面で「JDBC」「Spring Web」「MySQL Driver(または他のDB Driver)」をチェックします。
生成されたbuild.gradleファイルには、次のような記述が自動で追加されます。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.mysql:mysql-connector-j'
}
Spring Bootでは、設定ファイルapplication.propertiesにデータベース接続情報を記述します。
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
次に、JDBCを使ってデータベースからデータを取得する基本的なサンプルコードを用意します。@Controllerを使って画面に結果を表示する構成とします。
@Controller
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/users")
public String getUsers(Model model) {
List<String> userList = jdbcTemplate.query(
"SELECT name FROM users",
(rs, rowNum) -> rs.getString("name")
);
model.addAttribute("users", userList);
return "userlist";
}
}
このようにして、JDBCとSpring Bootを使ったデータベース接続は比較的シンプルに構築できます。最初は構造が分かりにくいかもしれませんが、流れを理解すれば応用もスムーズになります。
次回は、pleiadesを使って実際にSpring Bootプロジェクトを作成する手順や、application.propertiesの設定の詳細、サンプルHTML画面との連携方法などをさらに深堀りしていきます。
3. JDBCとは何か?初心者向けにわかりやすく図解イメージ
JDBC(ジェイディービーシー)は、Javaプログラムからデータベースにアクセスするための標準的な仕組みです。たとえば、「ユーザー情報を登録する」「商品一覧を表示する」といった処理の裏側では、JDBCがデータベースとのやり取りを担当しています。
JDBCは、以下のような役割を果たしています。
- Javaプログラムとデータベースの橋渡し
- SQL文を実行して、データを取得・更新する
- 接続の開始・終了を安全に行う
イメージしやすいように、簡単な図解にすると次のようになります。
【JDBCのイメージ】
Javaプログラム
↓(SQL文)
JDBCドライバ
↓(接続)
データベースサーバー
JavaのコードからSQL文を送ると、JDBCドライバがその指示をデータベースに伝えます。そして、データベースが返してきた結果をJDBCが受け取り、Javaプログラムに返します。
このように、JDBCはJavaとデータベースの「通訳」のような役割を持っています。Spring Bootは、このJDBCの仕組みをうまくラップして、より簡単に扱えるようにしてくれます。
4. application.propertiesの基本的な設定方法
Spring Bootでは、接続情報や設定値をapplication.propertiesというファイルに記述します。このファイルは、プロジェクトのsrc/main/resourcesフォルダ内にあります。
データベースと接続するためには、次のような基本的な設定を行います。
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
各項目の意味を簡単に説明します。
spring.datasource.url:データベースの場所を指定します。
例では、ローカルのMySQLサーバーにあるsampledbというデータベースに接続しています。spring.datasource.username:データベースにログインするためのユーザー名です。spring.datasource.password:そのユーザーのパスワードです。spring.datasource.driver-class-name:使用するJDBCドライバのクラス名です。MySQLの場合はcom.mysql.cj.jdbc.Driverです。
これらの情報が正しく記載されていないと、Spring Bootアプリケーションはデータベースに接続できません。最初は間違えやすいので、スペルミスなどに注意しましょう。
また、application.propertiesに設定した内容は、自動的にSpring Bootが読み取ってくれるので、特別なコードを書く必要はありません。
5. データベース接続に必要な依存関係(Gradleで追加)
Spring BootでJDBCを使ったデータベース接続を行うためには、いくつかの依存関係(ライブラリ)をプロジェクトに追加する必要があります。
pleiadesでは、プロジェクト作成時にチェックボックスで「Spring Web」「JDBC」「データベースドライバ(例:MySQL)」を選択すれば、自動的にbuild.gradleに記述されます。
依存関係が追加されると、build.gradleファイルには以下のような内容が含まれます。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.mysql:mysql-connector-j'
}
ここで使われているそれぞれの依存関係の意味は次のとおりです。
spring-boot-starter-web:Webアプリケーションを作成するための基本的な機能が含まれています。@Controllerを使った画面表示にも必要です。spring-boot-starter-jdbc:JDBCを使ったデータベース接続に必要なライブラリが含まれています。mysql-connector-j:MySQLとJavaを接続するためのJDBCドライバです。他のデータベースを使う場合は、対応するドライバに変更する必要があります。
Gradleは、このbuild.gradleファイルを読み取って、必要なライブラリを自動的にダウンロードしてくれます。手動でファイルをダウンロードする必要はありません。
プロジェクト作成後に依存関係を変更した場合は、「Gradleのリフレッシュ」をpleiadesから行っておくと、正しく反映されます。
これで、Spring BootとJDBCを使ったデータベース接続の基本的な準備は完了です。次回は、実際にデータを操作するコードや、@Controllerと画面の連携について詳しく見ていきます。
6. サンプルコードで接続処理の流れを解説(Controller+Service+Repository)
Spring BootでJDBCを使ってデータベースに接続する場合、コードを役割ごとに分けると管理しやすくなります。ここでは初心者にもわかりやすいように、@Controller・Service・Repositoryの3つの構成に分けて、データ取得の処理を実装してみましょう。
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String showUsers(Model model) {
List<String> users = userService.getUserNames();
model.addAttribute("userList", users);
return "userlist";
}
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<String> getUserNames() {
return userRepository.findAllNames();
}
}
@Repository
public class UserRepository {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<String> findAllNames() {
String sql = "SELECT name FROM users";
return jdbcTemplate.query(sql, (rs, rowNum) -> rs.getString("name"));
}
}
この構成にすると、それぞれの役割が明確になるため、後から機能を追加したり修正したりする際もスムーズに対応できます。また、Spring Bootのおすすめ設計パターンにも適しています。
7. よくあるエラーとその対処法(接続失敗・URLミス・認証ミスなど)
Spring BootとJDBCでデータベース接続を試みる際、初心者がよくつまずくポイントをまとめておきます。ここでは代表的なエラーとその原因・対処方法を解説します。
エラーメッセージ例:
Communications link failure
このエラーは、データベースが起動していない、あるいは接続先のURLが間違っている場合に表示されます。
対処方法:
- MySQLなどのデータベースが起動しているか確認する
spring.datasource.urlの値が正しいかチェック(ポート番号やデータベース名のスペルミスに注意)
エラーメッセージ例:
Access denied for user 'root'@'localhost'
これはユーザー名やパスワードが正しくないときに表示されます。
対処方法:
application.propertiesのspring.datasource.usernameとspring.datasource.passwordを再確認- データベースの設定で、そのユーザーが接続を許可されているか確認
エラーメッセージ例:
Cannot load driver class: com.mysql.cj.jdbc.Driver
これはMySQLのJDBCドライバがGradleに正しく設定されていない可能性があります。
対処方法:
build.gradleにmysql-connector-jが含まれているか確認- Gradleのリフレッシュを実行して依存関係を再取得
これらのエラーは初心者が最初に遭遇しやすいものですが、落ち着いて原因を絞り込むことで確実に解決できます。
8. JDBCを使うときの注意点と今後学ぶべき方向性
JDBCはとても基本的な技術で、データベース接続の仕組みを理解するには最適です。しかし、実際の業務では、JDBCだけではコード量が多くなりがちで、保守性が下がることがあります。
Spring Bootでは、JDBCの次のステップとして「Spring Data JPA」という仕組みを使うのが一般的です。Spring Data JPAを使えば、SQLを書くことなく、インタフェースだけでデータベース操作ができるようになります。
例として、JDBCでは次のようにSQLを書きますが、
String sql = "SELECT name FROM users";
jdbcTemplate.query(sql, (rs, rowNum) -> rs.getString("name"));
Spring Data JPAを使うと、次のように非常にシンプルな書き方で実現できます。
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
このように、Spring Bootにはより効率的に開発できる仕組みがたくさん用意されています。最初はJDBCでしっかりとデータベース接続の仕組みを理解し、次のステップとしてJPAやMyBatisなどを学んでいくと、より柔軟で大規模なアプリケーション開発にも対応できるようになります。
JDBCを使う際には、以下の点に注意してください。
- SQL文を直接書くため、構文ミスやバグが起きやすい
- データベースに依存する記述が多くなりがち
- トランザクション管理を適切にしないとデータ整合性が崩れる
そのため、Spring Bootを使った開発に慣れてきたら、より高機能なフレームワークの活用も視野に入れて学習を進めていきましょう。