티스토리 뷰

  • 유저 등록(완료)
  • 유저 단건 조회(완료)
  • 유저 모두 조회(완료)
  • 유저 삭제(완료)
  • 서비스 추상화(완료)
  • JPA 사용(완료)
  • Postman으로 확인(진행중)
  • H2 사용(완료)
  • 엔티티 생성(완료)
  • dto 생성(완료)
  • REST API(진행중)
  • 리팩토링

 

 

1.  REST API 구현

 

2. Postman으로 확인

postman설치는 생략하도록 하겠다.

 

 

postman에서 JSON으로 요청값을 보낸다.

 

 

리턴값을 Long으로 해서 1이 응답된 것을 볼 수 있다. 전체 조회를 해야하기 때문에 몇개 더 넣어보겠다.

 

 

이제 h2로 select쿼리문을 실행해보겠다.

주의: h2를 실행할 때 ./h2.sh로 하면 오류가 뜬다. ./h2.sh -webAllowOthers로 실행해주자.

 

 

이렇게 잘 들어간 것을 볼 수 있다. 그럼 전체 조회를 해보겠다.

 

 

왜 null이 들어갔을까 ? 찾아보니 all로직에서 id를 응답해주지 않아 null값이 들어갔던 것이다. 원인을 알았으니 추가해주자. 

(먼저 MemoResponseDto의 Builder에 id를 추가해주자.)

 

 

그리고 다시 실행해보면 잘 들어간 것을 볼 수 있다. id값이 들어간 걸 보여주기 위해 애매하게 찍었음

 

 

그럼 단건 조회를 해보자.

 

 

이제 왜 null이 뜨는지 다 알고 있을 것이다ㅋㅋ.. 추가해주자. 

 

 

그럼 다시 재실행해서 값을 넣어주자. 만약 전에 입력했던 값이 남아있는 것을 원한다면 application.yml에 ddl-auto를 update로 바꿔주면 된다.

 

id값이 잘 들어간 것을 볼 수 있다.

 

 

수정을 해보자.

 

 

마찬가지로 응답값을 Long으로 줬기 때문에 3이라 떴다. 한번 전체조회를 해보면

 

 

바뀌지 않았다! 무슨 원인일까 고민하다가 Optional을 쓰면 그냥 get으로 받아오면 안된다는 것을 알았다. 그럼 한번 바꿔보자.

 

 

이래도 되질 않는다. 그래서 한번 로그를 찍어보니 

 

 

잘 찍히는 것을 보고 db에 저장이 안되었다는 것을 알았다. (db에 저장이 안됨 = 트랜잭션이 안됨 = @Transactional을 붙여주자)

업뎃이 안먹히는 이유는 클래스를 readOnly = true로 했기 때문에 조회가 아닌 로직들은 다 @Transactional을 붙여줘야 한다.

 

 

붙이고 다시 실행을 해보면 잘 바뀌는 것을 볼 수 있다.

 

 

마지막으로 삭제를 해보자. 실행하기 전에 업뎃과 마찬가지로 트랜잭션 어노테이션을 붙여주자.

 

 

 

그리고 id가 2인 메모를 삭제하고 다시 전체조회를 하면 삭제된 것을 확인할 수 있다.

 

 

다음 페이지에선 코드 리펙토링을 해보겠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday