SpringBoot JPAでPostgreSQLにselectするサンプル

Spring BootからJPAでPostgreSQLにselectするサンプルです。
(確認環境:Spring Boot 2.5,JDK 11,STS 4,PostgreSQL13)

目次

サンプル 環境
  1.pom.xmlの設定
  2.application.propertiesの設定
  3.エンティティのファイル(Employee.java)
  4.レポジトリのインターフェース(EmployeeRepository.java)
  5.コントローラのクラス(MainController.java)
  データの確認

環境

作成/修正するファイルは以下の赤枠の部分です。

以下は、今回使用するPostgreSQLのテーブルです。テーブル名は「Employee」です。

id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato

githubにコードがあります。
https://github.com/ut23405/springbootdb/tree/main/springboot-jpa-postgresql

 

1.pom.xmlの設定

必要なライブラリです。

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

JPAとは

JPAは、Java Persistence APIの略です。
Javaのオブジェクトとテーブルのデータを対応付けます。

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa

 

2.application.propertiesの設定

application.propertiesにDB情報を記述します。DB情報は1~3行目です。

spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/testdb1
spring.datasource.username=postgres
spring.datasource.password=postgres
server.port = 8765

1行目のtestpdb1はデータベース名です。
PostgreSQLのポート番号のデフォルトは5432です。

 

3.エンティティのファイル(Employee.java)

エンティティのクラスです。
Employeeテーブルのデータを格納します。

package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;

@Entity
@Table(name="employee")
public class Employee {
    @Id
    private Integer id;
    
    private String name;
    
    private String romaji;
    
    public Integer getId() {
        return id;
    }
	public String getName() {
		return name;
	}
	public String getRomaji() {
		return romaji;
	}
}

 

4.レポジトリのインターフェース(EmployeeRepository.java)

レポジトリのインターフェースです。
SQLを実行する部分に該当します。

package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;

public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
}

4行目は、JpaRepositoryインターフェースを継承しています。
findAllなどのメソッドを使用できるようになります。
引数のEmployeeはエンティティの型で、Integerは@Idの型です。

以下は、JpaRepositoryインターフェースのリンクです。
https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html

 

5.コントローラのクラス(MainController.java)

List<T> findAll()

コントローラのクラスです。

package com.example.demo;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {
	@Autowired
	private EmployeeRepository employeeRepository;

	@GetMapping("/test1")
	public List<Employee> get() {
		return employeeRepository.findAll();
	}
}

7行目のRestControllerアノテーションは、メソッドの戻り値を画面に表示します。
14行目は、findAllメソッドでデータを全件取得しています。JpaRepositoryを継承しているため可能です。

 

データの確認

1.以下のURLにアクセスします。
http://localhost:8765/test1

2.画面にJSON形式で表示されます。以下は整形後です。

[
    {
        "id": 1,
        "name": "鈴木",
        "romaji": "suzuki"
    },
    {
        "id": 2,
        "name": "田中",
        "romaji": "tanaka"
    },
    {
        "id": 3,
        "name": "佐藤",
        "romaji": "sato"
    }
]

関連の記事

SpringBoot hello worldを表示するサンプル
SpringBoot フォームの値を別画面に渡す
SpringBoot DI(依存性の注入)のサンプル
SpringBoot AOPのサンプル
SpringBoot JSONの送信と受信のサンプル

△上に戻る