728x90
이 글은 ASAC 06기를 수강하며 강의 자료 참고 및 추가 자료 수집을 통해 작성된 글입니다.
직렬화와 역직렬화
데이터를 형식에 따라서 차원으로 표현할 수 있다.
- 1차원 데이터 : String, JSON(JSON도 사실상 구조가 있는 String)
- 2차원 데이터 : Java 객체
직렬화와 역직렬화는 데이터 차원의 변환이다.
- 직렬화 (Serialization) : 2차원 데이터 -> 1차원 데이터로 변환
- 역직렬화 (Deserialization) : 1차원 데이터 -> 2차원 데이터로 변환
HTTP 요청이 들어오면 서버는 JSON 형식의 데이터를 받게 된다. JSON은 단지 String일 뿐이기 때문에, 애플리케이션 내부에서 데이터를 사용하기 위해서는 JSON을 객체로 변환하는 역직렬화를 해야 한다.
애플리케이션 내부에서는 함수-함수 간, 클라이언트-서버 간 데이터 전달을 위해 DTO(Data Transfer Object) 라는 객체를 두고 사용한다.
서버 내/외부 데이터 형태
- 서버 외부 : JSON 사용
- 서버 외부 -> 서버 내부 전달 : JSON -> Object(DTO) 변환
- 서버 내부 : Object(DTO) 사용
- 서버 내부 -> 서버 외부 전달 : Object(DTO) -> JSON 변환
스프링에서 @RequestBody , @ResponseBody 어노테이션은 메세지 컨버터를 사용하여 파라미터(받은 데이터, 반환하는 데이터)를 자동으로 직렬화, 역직렬화 해준다.
728x90
'ASAC' 카테고리의 다른 글
[ASAC 06] OS 개요 및 프로그램 동작 원리 (1) | 2024.08.28 |
---|---|
[ASAC 06] 서버 구축 방식, Serverless, Load Balancer (3) | 2024.08.28 |
[ASAC 06] 백엔드 개발의 목적 (1) | 2024.08.28 |
[ASAC 06] 프레임워크와 라이브러리 차이, 웹 애플리케이션 프레임워크 (3) | 2024.08.28 |
[ASAC 06] SSL 인증서 (0) | 2024.08.27 |