이전에 JS/Node.js로 프로젝트를 진행할 때, 소셜로그인 기능을 구현하면서 객체를 serialize - deserialize하는 과정을 거쳤었다. 그 당시에도 이 개념에 대해 간단하게 익히고 기능을 구현했었는데 이번에 자바에서 기능을 구현하면서 다시 한번 개념을 다지고 가기 위해 기록해본다.
구현하면서 데이터를 통신할 때 JSON 형식으로 바꿔줘야 했는데 이 때 ObjectMapper를 사용함으로써 데이터 응답들을 직렬화하고 요청들을 역직렬화할 수 있었다. (ObjectMapper에 대한 글은 다음에 기록해보려고 한다.)
아래와 같이, Java에서의 직렬화/역직렬화에 대해 간단하게 익혀보기로 한다.
1. 직렬화 (Serialize)
- 말 그대로 객체를 직렬화해 전송 가능한 형태로 만드는 것이다. 객체들의 데이터를 연속적인 데이터로 변형해 Stream을 통해 데이터를 읽도록 해준다. 이것은 주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 주로 사용된다. (Object -> String 문자열)
2. 역직렬화 (Deserialize)
- 직렬화된 파일 등을 역으로 직렬화해 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다. 다시 말하자면, 데이터가 모두 전송된 이후, 수신 측에서 다시 문자열을 기존의 객체로 회복시켜주는 것이다. (String 문자열 -> Object)
