タイトル: DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
SEOタイトル: 【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで
本稿ではSpring FrameworkにおけるJPAを使用したDBの作成~値の取得まで一通りを説明します。
前提
・Spring Bootを使用
・mavenを使用
・DBはMySQLを使用(適宜読み替えられれば他のDBでも可能)
DBの作成
今回の例ではMySQLを用意します。
Windowsの場合、MySQLを単独でインストールすると色々と設定がめんどくさいので、今回はXAMPPのMySQLを使用します。XAMPPのインストールはこちらを参照。
MySQLにデータベースおよびテーブルを作成しましょう。以下のコマンドを実行します。
CREATE DATABASE spring_db CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL PRIVILEGES |
テスト用のテーブルを作成
以下のコマンドを実行してテスト用のテーブルを作成しましょう。
CREATE TABLE `user`( ALTER TABLE `user` ADD PRIMARY KEY (`id`); ALTER TABLE `user` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; INSERT INTO user (name)VALUES('tarou'),('jirou'); |
pom.xmlの修正
必要なライブラリをpom.xmlに記載します。
dependenciesに以下の項目を追加しましょう。
<dependency> |
DB接続設定
「src/maim/resources」の「application.properties」に以下の内容を追記しましょう。
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver |
エンティティクラスの作成
Java側のデータ保持用のエンティティクラスを作成します。
分かりやすいようにentity用のパッケージを作成しておきましょう。
テーブル定義に沿って以下の様に定義しましょう。
package com.example.demo.entity; import javax.persistence.Column; @Entity public long getId() { public void setId(long id) { public String getName() { public void setName(String name) { |
リポジトリインターフェースの作成
DB操作の処理をリポジトリインターフェースで定義します。
分かりやすいようにrepository用のパッケージを作成しておきましょう。
以下、リポジトリインターフェースの定義例となります。
package com.example.demo.repository; import com.example.demo.entity.User; import org.springframework.data.jpa.repository.JpaRepository; @Repository |
JpaRepositoryのジェネリクスの第二引数にはUserエンティティの主キーの型を指定します。
もし、独自のSQLを記述したい場合はメソッド名を指定して@Query内にSQLを記述します。
package com.example.demo.repository; import com.example.demo.entity.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @Repository @Query("SELECT c FROM User c WHERE c.id = :id") List<Customer> findAllById(@Param("id") Integer id); } |
テーブルから値の取得
それでは実際にテーブルから値を取得してみましょう。
適当な以下のようなコントローラーを作成して、リポジトリ経由でデータを取得してみます。
userテーブルからuser情報を取得する処理を記載してみましょう。
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import com.example.demo.entity.User; @SpringBootApplication @RequestMapping("/") } |
出力結果は以下の通りです。
tarou |