클라이언트의 요청을 받고, 요청에 대한 로직 처리를 Service에게 전담한다.
Service에서 처리 완료된 결과를 클라이언트에게 응답한다.
사용자의 요구사항을 처리하는 실세이다.
DB저장 및 조회가 필요할 때는 Repository에 요청한다.
DB 관리, DB 작업(CRUD) 처리
에 따라서 분리하는 작업을 진행하였다.
//기존 코드
@PostMapping("/memos")
public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto) {
// RequestDto -> Entity
Memo memo = new Memo(requestDto);
// DB 저장
KeyHolder keyHolder = new GeneratedKeyHolder(); // 기본 키를 반환받기 위한 객체
String sql = "INSERT INTO memo (username, contents) VALUES (?, ?)";
jdbcTemplate.update( con -> {
PreparedStatement preparedStatement = con.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, memo.getUsername());
preparedStatement.setString(2, memo.getContents());
return preparedStatement;
},
keyHolder);
// DB Insert 후 받아온 기본키 확인
Long id = keyHolder.getKey().longValue();
memo.setId(id);
// Entity -> ResponseDto
MemoResponseDto memoResponseDto = new MemoResponseDto(memo);
return memoResponseDto;
}
// service 와 repository 분리
@PostMapping("/memos")
public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto) {
// service 요청하기, 로직처리를 서비스단으로 변경
MemoService memoService = new MemoService(jdbcTemplate); // 서비스 객체 생성
return memoService.createMemo(requestDto); // 클라이언트에서 전달받은 데이터도 사용 받게 함께 전달
}
// controller 에서 요청받은 비즈니스 로직 수행
public MemoResponseDto createMemo(MemoRequestDto requestDto) {
// RequestDto -> Entity
Memo memo = new Memo(requestDto);
// DB 저장 필요하기 때문에 repository에 요청
MemoRepository memoRepository = new MemoRepository(jdbcTemplate);
Memo saveMemo = memoRepository.save(memo); // db에 저장
// Entity -> ResponseDto
MemoResponseDto memoResponseDto = new MemoResponseDto(memo);
return memoResponseDto;
}
// 서비스에서 요청한 db 관련 crud 작업 진행
public Memo save(Memo memo) {
// db 저장
KeyHolder keyHolder = new GeneratedKeyHolder(); // 기본 키를 반환받기 위한 객체
String sql = "INSERT INTO memo (username, contents) VALUES (?, ?)";
jdbcTemplate.update(con -> {
PreparedStatement preparedStatement = con.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, memo.getUsername());
preparedStatement.setString(2, memo.getContents());
return preparedStatement;
},
keyHolder);
// DB Insert 후 받아온 기본키 확인
Long id = keyHolder.getKey().longValue();
memo.setId(id);
return memo;
}