본문 바로가기
프로젝트/Spring Boot 블로그프로젝트

[블로그프로젝트] 4. JpaRepository 로 데이터 insert 해보기

by dantriss 2023. 2. 9.

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩

 

기존에 하던 MVC패턴으로하는 CRUD를 하는 방법이 아닌 JpaRepository를 이용하여 CRUD를 하는 방법을 알게 되었다.

우선 /src/main/java/com/blog/ 하위 폴더로 test 를 만들어 DummeyControllerTest.java 를 생성해준다.

그 후 insert 테스트기에 postmapping을 해주고 값을 지정해준다.

들어 오는 값을 확인해보기 위해 sysout을 해서 파라미터들을 한 번 찍어보자.

 

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


@RestController
public class DummeyControllerTest {

    @PostMapping("/insert")
    public String test(String user_id, String password, String email) {
        System.out.println("userid : "+user_id);
        System.out.println("password : "+password);
        System.out.println("email : "+email);

        return "회원가입완료";
    }
 

그 후 src/main/java/com/blog/ 하위폴더로 repository 폴더를 하나 생성하고 UserRepository 라는 이름으로 interface를 만들어 주었다.

JpaRepository를 상속하고 <테이블명,PK의 타입>을 작성해준다.

여기서 JpaRepository에 의해 bean 등록이 되기 때문에 @Repository 어노테이션을 작성해 줄 필요가 없다.

import com.blog.table.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User,Integer> {


}

 

다시 DummyControllerTest로 돌아와서 UserRepository를 Autowired 를 하면 Field injection is not recommended 라는 경고문이 뜨는데 service단에 하는게 옳은 방식이기에 경고해주는거고 무시해도 된다.

 

이번엔  같은 postmapping이지만 파라미터를 아예 user로 받아서 사용해 보았다.

 

import com.blog.repository.UserRepository;
import com.blog.table.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class DummeyControllerTest {

    @Autowired //의존성 주입
    private UserRepository userRepository;

    @PostMapping("/insert")
    public String test(String user_id, String password, String email) {
        System.out.println("userid : "+user_id);
        System.out.println("password : "+password);
        System.out.println("email : "+email);

        return "회원가입완료";
    }

    @PostMapping("/insert2")
    public String test2 (User user) {
        System.out.println("useremail : "+user.getEmail());

        userRepository.save(user);
        return "회원가입완료2";
    }
}

 

이제 테스트를 해볼 차례이다.

post이기 때문에 postman을 사용해서 테스트를 진행해보았다.

 

 

post 확인 후 url을 잘 작성하고 body 쪽에 key 값(= class 에서 작성한 변수이름) 과 사용할 value를 입력하고 send를 눌러보면 return 으로 설정한 문자열을 볼 수 있다.

콘솔에서 확인해보면 내가 담아주었던 값들이 잘 넘어오는걸 확인할 수 있다.

 

 

이제 JpaRepository를 이용한 데이터 insert를 진행해보자.

JpaRepository를 사용한 interface의 변수명.save(class 파라미터)를 해주면 된다.

@PostMapping("/insert2")
public String test2 (User user) {
    System.out.println("useremail : "+user.getEmail());

    userRepository.save(user);
    return "회원가입완료2";
}

 

postman에서 확인해보자.

 

mapping 한 url 주소로 바꿔서 send를 눌러주면 return 값이 잘 넘어 오는걸 확인 할 수 있다.

콘솔을 확인해보면

 

insert 쿼리문이 작동한걸 볼 수 있고 DBeaver를 확인해보면 데이터가 들어가있는걸 확인해 볼 수 있다.

 

댓글