본문 바로가기
ASAC

[ASAC 06] 데이터 직렬화와 역직렬화

by suhsein 2024. 8. 28.
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