0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spring Bootを基本からまとめてみた【JPA・Spring Data JPA】

Last updated at Posted at 2023-05-30

JPA・Spring Data JPAとは?

JPA(Java Persistence API)とは、Jakarta EE(Java EE)標準のORマッパーで、JPAは仕様(Interface)のみ提供し、その実装はJPAプロバイダより提供される。

Spring Data JPAとは、Springフレームワーク群のSpring Dataファミリー内のデータベースプロジェクトの1つで、その名のとおりJPAをベースとしており、JPAを使いやすくラップしたものがSpring Data JPAである。

1.プロジェクトを作成する

公式:spring initializr

① ブラウザを開き、(https://start.spring.io/) を入力し、開く
② 下記を入力し、Dependenciesで下記を選択し、『GENERATE』ボタンを押す

  • Project: Maven
  • Language: Java
  • SpringBoot: 3.1.0
  • Group: com.springdatajpa
  • Artifact: spring-data-jpa-course
  • Name : spring-data-jpa-course
  • Description: Spring Data JPA with Spring Boot
  • Package name: com.springdatajpa.springboot

Dependencies

  • Spring Data JPA
  • MySQL Driver

2. MySQLに接続する

① SpringBootを接続するため、MySQLのDatabaseのプロパティを設定する

mysql.database
create database ecommerce;

② application.propertiesを編集する

application.properties


src/resources/application.propertiesという設定ファイルが存在し、
application.propertiesのファイル名をapplication.ymlに変更する。

②WEBコンテナ(server)の設定する

src/main/resources/application.yml
server:
  port: 8080
  servlet:
    context-path: /chat-backend

③DB接続の設定する

src/main/resources/application.yml
//WEBコンテナ(server)の設定する
server:
  port: 8080
  servlet:
    context-path: /chat-backend
//DB接続の設定する
spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb;MODE=MySQL
    username: sa
    password:

③MyBatisの設定する

src/main/resources/application.yml
//WEBコンテナ(server)の設定する
server:
  port: 8080
  servlet:
    context-path: /chat-backend
//DB接続の設定する
spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb;MODE=MySQL
    username: sa
    password:
//MyBatisの設定する
mybatis:
  mapper-locations: classpath*:mybatis/*.xml
  configuration:
    map-underscore-to-camel-case: true

④gradleでビルドする

./gradlew build

3.Hello worldを動かす

①Controllerのディレクトリを作る
src/main/java/[プロジェクト名]の下に、app/controllerディレクトリを作り、
controllerディレクトリの下にHelloController.javaというファイルを作成する。

②HelloControllerがエンドポイントを持つクラスであることを示すためにクラスに対して@RestControllerアノテーションを付与する。

app/controller/HelloController.java
package slack_chat.app.controller;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

}

③エンドポイントを追加する

app/controller/HelloController.java
package slack_chat.app.controller;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping(path = "/hello", method = RequestMethod.GET)
    public String hello() {
        return "Hello, world!";
    }
}

@RestControllerが付与されたクラスの中から@RequestMappingが付与されたpublicメソッドがエンドポイントとして扱われる。@RequestMappingではURLのパスとHTTPメソッドを指定する。

④リファクタリングする

app/controller/HelloController.java
package slack_chat.app.controller;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, world!";
    }
}

4.テスト用に Hello API を拡張する

①Hello クラスを作成する
domain/hello/modelディレクトリを作り、その下にHello.javaを作成します。

domain/hello/model/Hello.java
package slack_chat.domain.hello.model;

@Data
@AllArgsConstructor
public class Hello {
    private String message;
}

②Controller を修正する

app/controller/HelloController.java
package slack_chat.app.controller;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    // ↓引数を追加
    public Hello hello(@RequestParam("name") Optional<String> name) {
        // ↓引数未指定時は「world!」とする。
        String resName = name.orElse("world!");
        // ↓引数の値または「world!」を
        return new Hello("Hello, " + resName);
    }
}

5.API リクエスト送信とレスポンス検証する

①テストクラスを作成する
src/test/java/com/skach_chatに、chat/chatbackendにapiフォルダとHelloApiTest.javaを作成する。

②テストクラスにアノテーションとMockMvc クラスのインスタンス変数追加する

chat/chatbackend/api/HelloApiTest.java
package slack_chat.chat.chatbackend.api;

@SpringBootTest
@AutoConfigureMockMvc

public class HelloApiTest {
    @Autowired
    private MockMvc mockMvc;
}

③テストメソッド作成する

chat/chatbackend/api/HelloApiTest.java

参考サイト

Spring Data JPA Tutorial | Crash Course [New] [2023]
Spring Data JPAを使用したDBアクセス

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?