SpringBootとJPAを使ってDBにInsertするための8つのこと

目次
0. 今回の目的
1. SpringBootのプロジェクト作成
2. MysqlにDBを用意する
3. PropertiesFileの設定
4. Entityクラスの用意
5. Repositoryクラスの用意
6. Serviceクラスの用意
7. Controllerクラスの用意
8. curlを使って確認
9. おわり

 0. 今回の目的

  • SpringBootを始めたばかりの時に、JPAを使ってDBにInsertするだけのことが出来なくて 猫にも分かる記事がなかったのであの時の自分に向けて書く。
  • 特別JPAについての説明などはないです、ただただDBにInsertすることを記事にしただけです。

1. SpringBootのプロジェクト作成

  • 先ずはSpringBootのプロジェクトを作成します
  • SPRING INITIALIZRにアクセスする
  • Generate a [Gradle Project] with [Java] and Spring Boot [1.5.9] に設定する
  • [Group][Artifact]は適当でどうぞ。今回はGroup名は[com.jpa]にArtifact名は[demojpa]にします。
  • [Dependencies]には[Web][MySql][JPA][lombok]を設定します。
  • 以上で[Generate Project]で作成してください。
  • 作成されたプロジェクトを展開してIDEでOPENする。(今回はInteliJ IDEAを使用)

2. MysqlにDBを用意する

  • MySqlにJPAのテスト用のDBを用意する。
  • 今回はこのような構成で用意しました。
  • DB名は[jpa_test]
CREATE TABLE `members` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NULL,
  PRIMARY KEY (`id`));

id name
1 hoge

3. PropertiesFileの設定

  • IDEを開く
    • srcのmain直下の[resources][application.properties]を開く
    • 以下の3行のおまじないを書き、MySqlに繋げるようにしておく。
      • spring.datasource.url=jdbc:mysql://localhost:3306/jpa_test
      • spring.datasource.username= MySqlのusername
      • spring.datasource.password= MySqlのpassword

4. Entityクラスの用意

  • srcのmain直下に[domain]Packageを作成する。
  • [domain]Packageの中に[Members.java]を作成して以下のコードを記述する。
package com.jpa.demojpa.domain;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Data
@Entity
public class Members {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
}

5. Repositoryクラスの用意

  • [domain]Packageの中に[MembersRepository.java]を作成して以下のコードを記述する。
package com.jpa.demojpa.domain;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MembersRepository extends JpaRepository<Members, Integer> {
}

6. Serviceクラスの用意

  • srcのmain直下に[service]Packageを作成する。
  • [service]Packageの中に[MembersService.java]を作成して以下のコードを記述する。
package com.jpa.demojpa.service;

import com.jpa.demojpa.domain.Members;
import com.jpa.demojpa.domain.MembersRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MembersService {
    private final MembersRepository membersRepository;

    public String create() {
        Members members = new Members();
        members.setName("hoge");
        membersRepository.save(members);
        return "success!!";
    }
}

7. Controllerクラスの用意

  • srcのmain直下に[web]Packageを作成する。
  • [web]Packageの中に[MembersController.java]を作成して以下のコードを記述する。
package com.jpa.demojpa.web;

import com.jpa.demojpa.service.MembersService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/members")
@RequiredArgsConstructor
public class MembersController {
    private final MembersService membersService;

    @PostMapping
    public String create() {
        return membersService.create();
    }
}

8. curlを使って確認

  • ターミナルを開き以下のcurlで確認する。
curl http://localhost:8080/members
  • [success!!]が返ってくるはずです、返ってきたらMySqlを確認してください。

9. おわり

  • 以上でSpringBootとJPAを使ってDBにInsertするための8つのこと終了です。
  • あとは[findOne][save][delete]とかがJpaRepositoryには用意されているので使ってみてください。
membersRepository.findOne(1);
membersRepository.save(members);
membersRepository.delete(1);