개인 공부/BackEnd Study
[ Spring Boot ] 맨날 까먹는 나를 위한 복습 - 15 -
킴도비
2024. 3. 29. 15:19
15.1 댓글 REST API의 개요
- REST 컨트롤러 : 댓글 REST API를 위한 컨트롤러로 서비스와 협업, 클라이언트 요청을 받아 응답하며 뷰가 아닌 데이터를 반환
- 서비스 : REST 컨트롤러와 리파지터리 사이에서 비즈니스 로직, 즉 처리 흐름을 담당하며 예외 상황이 발생했을 때 @Transactional로 변경된 데이터 롤백
- DTO : 사용자에게 보여줄 댓글 정보를 담은 것, 단순히 클라이언트와 서버 간에 댓글 JSON 데이터 전송
- 엔티티 : DB 데이터를 담는 자바 객체로 엔티티를 기반으로 테이블 생성, 리파지터리가 DB 속 데이터를 조회하거나 전달할 때 사용
- 리파지터리 : 엔티티를 관리하는 인터페이스로 데이터 CRUD 등의 기능 제공, 서비스로부터 댓글 CRUD 등의 명령을 받아 DB에 보내고 응답받음
15.2 댓글 컨트롤러와 서비스 틀 만들기
15.3 댓글 조회하기
- map() 메서드를 이용하면 스트림에서 요소를 꺼내 조건에 맞게 변환할 수 있음
.map(a -> b) // 스트림의 각 요소(a)를 꺼내 b를 수행한 경과로 매핑
- 메서드의 반환형을 맞추기 위해 collect() 메서드를 추가할 수 있음
.collect(Collectors.toList()) // 스트림 데이터를 리스트 자료형으로 변환
- 스트림의 주요 특징
- 스트림은 자바 컬렉션, 즉 리스트와 해시맵 등의 데이터 묶음을 요소별로 순차적으로 조직하는데 좋음.
- 원본 데이터를 읽기만 하고 변경하지 않는다.
- 정렬된 결과를 컬렉션이나 배열에 담아 반환할 수 있다.
- 내부 반복문으로 반복문이 코드상에 노출되지 않는다.
15.4 댓글 생성하기
- .orElseThrow() 메서드란?
- Optional 객체(존재할 수도 있지만 안 할 수도 있는 객체, 즉 null이 될 수도 있는 객체)에 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 전달값으로 보내 예외를 발생시키는 메서드
- 전달 값으로 IllegalArgumentException 클래스를 사용하면 메서드가 잘못됏거나 부적합한 전달값을 보냈음을 나타냄.
// 의도적으로 IllegalArgumentException 예외 발생
throw new IllegalArgumentException("메시지")
- JSON 데이터의 키 이름과 DTO의 변수 명이 다를 경우
- JSON 데이터의 키(key) 이름과 이를 받아 저장하는 DTO에 선언된 필드의 변수명이 다를 경우 DTO 필드 위에 @JsonProperty("키_이름")을 작성해 줘야 함. 이렇게 하면 해당 키와 변수가 자동으로 매핑됨.
15.5 댓글 수정하기
15.6 댓글 삭제하기