SQL
알고리즘
- 기사단원의 무기
- 여러 가지 소수의 개수를 구하는 방법과 각 방법의 시간복잡도
오늘 학습한 내용
Spring 기초 5주차
1. Spring의 요청 데이터 처리: 클라이언트 → 서버
- 데이터 전달 3가지 방법
-
GET + Query Parameter: URL에
?key=value형태로 데이터 포함. 검색/필터링에 주로 사용.QueryString이라고도 함http://localhost:8080/request-params?key1=value1&key2=value2 -
POST + HTML Form:
Content-Type: application/x-www-form-urlencoded. 브라우저<form>의 기본 동작. 데이터 형태는 쿼리 파라미터와 동일. -
HTTP Request Body:
Content-Type: application/json등. Body에 직접 데이터를 담아 전달. 최신 API의 표준 방식. 보통 JSON, xml 등의 형식으로 전달
-
- Spring 어노테이션별 특징
@RequestParam- 쿼리 파라미터나 Form 데이터를 특정 파라미터에 1:1로 바인딩함.
required=false로 설정 시,int타입은500 에러를 유발할 수 있으므로Integer같은 Wrapper 타입을 사용하는 게 안전함.defaultValue속성으로 기본값 지정 가능.- 생략 가능하지만 명시적으로 써주는 것이 좋음**.**
@ModelAttribute- 쿼리 파라미터나
Form데이터를 객체(DTO)에 자동으로 바인딩함 (Setter를 이용). - Controller에서 편하지만, JPA Entity를 직접 바인딩하지 않기.
- 클라이언트와 주고받는 데이터는 전용 DTO를 만들어 사용.
- 쿼리 파라미터나
@RequestBody- HTTP Body의 JSON 데이터를 객체(DTO)로 자동 변환함.
HttpMessageConverter(주로 Jackson)가 동작.- 최신 FE/BE 분리 환경(React, Vue 등)에서는 Form 데이터도
ModelAttribute보다 결국 이 방식으로 처리하는 것이 표준. @RequestParam,@ModelAttribute와 달리 생략 불가능.
2. Spring의 응답 데이터 처리: 서버 → 클라이언트
- 응답 3가지 방법
- 정적 리소스:
/static경로의 HTML, CSS, JS 등을 그대로 반환. - View Template (SSR): Thymeleaf 같은 템플릿 엔진으로 서버에서 데이터를 입힌 동적 HTML을 만들어 반환.
@Controller에서 String을 반환하면 View를 찾음. - HTTP Message Body: API 통신 시 JSON 같은 데이터를 직접 Body에 담아 반환.
- 정적 리소스:
- 응답 방식별 특징
@ResponseBody+@ResponseStatus- 객체를 반환하면 JSON으로 변환되고,
@ResponseStatus로 고정된 HTTP 상태 코드를 지정함. - 코드는 간결하지만, 조건에 따라 상태 코드를 바꿀 수 없어 유연성이 떨어짐.
- 객체를 반환하면 JSON으로 변환되고,
ResponseEntity<T>- 상태 코드, 헤더, Body를 모두 포함하는 완전한 HTTP 응답 객체를 직접 만들어 반환.
- 조건에 따라 상태 코드나 헤더를 동적으로 제어할 수 있어 가장 유연함.
- 일반적으로 가장 선호되는 방식.
- 응답 처리 예시
- 성공 시: Controller에서는 DTO 객체를 직접 반환. Spring이 자동으로
200 OK와 함께 JSON으로 만들어줌. 코드가 매우 깔끔해짐.- 단,
201 Created처럼 특정 상태 코드나 헤더가 필요할 때만ResponseEntity를 사용.
- 단,
- 실패 시: Controller에서
if/else로 에러를 처리하지 말 것.- Service에서 특정
Exception(예:UserNotFoundException)을 던짐. @RestControllerAdvice(글로벌 예외 핸들러)에서 이 예외를 잡아ResponseEntity로 일관된 에러 응답(예:404 Not Found)을 생성.
- Service에서 특정
- 성공 시: Controller에서는 DTO 객체를 직접 반환. Spring이 자동으로
JPA 기초
- DataSource 연결
- application.yml
- ddl-auto
- show_sql
- format_sql
- application.yml
Entity- Lombok
- JPA 제공 메소드
- @Transactional
- 더티 체킹
더 알아볼 내용 / 다음에 할 내용
- RestControllerAdvice를 이용한 전역 예외 처리
- HTTPMessageConverter의 유형
- ObjectMapper
- Jasckson, Gson
- Dirty Checking(변경 감지)과 Entity 업데이트 전략
- @DynamicUpdate