728x90
반응형
1. 구현 대상
회원 또는 활성화/비활성화 및 수정 비즈니스 로직이 필요한 경우. 예를 들어 아래와 같은 엔티티가 있다고 가정한다.
2. 구현 방식
2-1. Controller
수정을 목적으로 하므로, @PutMapping 처리를 해준다. 프론트 쪽에서 "v1/member" 주소로 MemberChangePo를 Http의 Body로 던져주고, Service에서 changeMemberInfo 메소드를 실행한다.
2-2. Service
여기가 패턴의 핵심이다. DB에서 어떤 객체의 Id값이 0일수 없으므로, id가 0일 때는 새로운 객체를 생성하도록 한다.
-> 210604 수정
: id == 0 으로 하되, null 일때의 방어 로직이 있어야 한다.
생성된 엔티티의 필드값들을 Po로 입력받은 값들로 정의하고 save하면 된다.
그 외의 경우에는 else 문으로 입력받은 memberId를 통해 DB에 존재하는 엔티티 객체를 불러오고, 그 객체의 값들을 Po로 입력받은 값들로 수정하고 save 한다.
3. id를 받아올 수 없는 상황일때
해당하는 엔티티 객체들을 모두 삭제하고, 받아온 엔티티 객체들을 모두 재등록한다.
728x90
반응형
'Programming-[Backend] > SpringBoot' 카테고리의 다른 글
[TIL] @JsonFormat으로 @DateTimeFormat 대신 Date까지만 받기 (0) | 2021.06.16 |
---|---|
[TIL] @SuperBuilder 사용법 (0) | 2021.06.07 |
[TIL] [에러] 파라미터 (Parameter Object) 값 null 문제 (0) | 2021.05.17 |
[TIL] @RequestBody, http의 파라미터를 Body로 넘기기(feat. 컨트롤러 테스트), MockMvc, Gson (0) | 2021.05.13 |
스프링 부트 : 기본 개념 1) Entity, Repository 개념 (10) | 2021.03.20 |