[Spring/개발] - TMI(1)

동글이·2022년 8월 13일
0

Spring/개발

목록 보기
2/7

requestbody 한번에 받아서 여러 db에 나누어 저장하는 방법

  • 처음 한번에 하나의 db 저장 코드
@RestController
@RequiredArgsConstructor
public class ProjectController {
    private final ProjectService projectService;

    @PostMapping("/projects")
    public ResponseEntity register (@RequestBody Project project){
        CustomResponseBody<Project> responseBody = new CustomResponseBody<>("프로젝트 등록 성공");
        try {
            projectService.register(project);

        } catch (RuntimeException re){
            responseBody.setResultCode(-1);
            responseBody.setResultMsg(re.getMessage());
            return ResponseEntity.badRequest().body(responseBody);
        } catch (Exception e){
            responseBody.setResultCode(-2);
            responseBody.setResultMsg(e.getMessage());
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseBody);
        }

        return ResponseEntity.ok().body(responseBody);
    }
}
  • 프로젝트 등록 시 requestbody를 받으면 각각 project, project_skill, recruit_info db에 나뉘어 저장이 되어야했다.

  • 하여 ProjectCreateDTO 라는 클래스를 만들어 주어 저장될 여러 파라미터들(모델들)을 해당 클래스에 넣어줌

@Getter @Setter
public class ProjectCreateDTO {
    private Project project;
    private ProjectSkill projectSkill;
}
  • @RequestBody 에서 받아올 부분을 수정하여주고 이에 맞게 필요한 service 들도 try문에 추가하여줌
@RestController
@RequiredArgsConstructor
public class ProjectController {
    private final ProjectService projectService;
    private final ProjectSkillService projectSkillService;


    @PostMapping("/projects")
    public ResponseEntity register (@RequestBody ProjectCreateDTO model){
        CustomResponseBody<ProjectCreateDTO> responseBody = new CustomResponseBody<>("프로젝트 등록 성공2");
        try {
            projectService.register(model.getProject());
            projectSkillService.register(model.getProjectSkill());

        } catch (RuntimeException re){
            responseBody.setResultCode(-1);
            responseBody.setResultMsg(re.getMessage());
            return ResponseEntity.badRequest().body(responseBody);
        } catch (Exception e){
            responseBody.setResultCode(-2);
            responseBody.setResultMsg(e.getMessage());
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseBody);
        }

        return ResponseEntity.ok().body(responseBody);
    }
}
profile
기죽지 않는 개발자

0개의 댓글