[Spring Boot] 데이터베이스 Update 하는 법
데이터베이스 Update하기
웹 브라우저에서 회원 수정을 하는 경우를 생각하며,
@PutMapping을 이용해서 주소를 만들어줬다. 이때 적은 주소는 @GetMapping의 주소와 동일한데, 스프링부트에서는 알아서 Get, Put을 구별해준다.
첫 번째 방법 (Save함수 사용)
주소에서 id를 받아온다. 이 id는 데이터베이스에 저장 된 id값을 불러오기 위함이다.
그리고 @ReqeustBody를 이용하여 Json 데이터를 요청하여, 이를 JavaObject로 변환한다.
SpringBoot에서는 MessageConverter가 Jackson 라이브러리를 사용하여 자동적으로 변환해준다.
1 | // email, password |
Select 때와 마찬가지로, 잘못 된 (없는) id값을 받았을 때를 방지하기 위해 IllegalArgumentException을 throw 할 수 있도록 한다.
정상적인 user객체에 수정하고자 했던 데이터(password와 email)을 set으로 수정해준다.
그리고 save함수를 이용하여 update해준다.
Save 함수, save 함수를 사용할 때
id를 전달하지 않으면 insert를 해주고,
id를 전달하고, 해당 id에 대한 데이터가 있으면 update를 해준다.
id를 전달하지만, 해당 id에 대한 데이터가 없으면 insert를 해준다.
두 번째 방법
@Transactional라는 annotaion을 사용해보자.
1 | // email, password |
첫 번째 방법과 크게 다른 것은 없지만, @Transactional을 이용하면, Save함수를 사용하지 않아도 된다.
이를 Dirty Checking (더티체킹) 이라고 한다.
updateUser라는 함수가 실행될 때, Transaction이 실행되고, return이 될때 Transaction이 자동으로 종료되며, 자동 commit이 된다.
영속성 컨텍스트와 더티체킹에 대해서 공부해보자!
[Spring Boot] 데이터베이스 Update 하는 법
https://devch.co.kr/2021/07/18/SPRINGBOOT-DB-Update-21-07-18/