on
Serialize 직렬화
Serialize 직렬화
문자열 형태의 직렬화 방법 직접 데이터를 문자열 형태로 확인 가능한 직렬화 방법입니다. 범용적인 API나 데이터를 변환하여 추출할 때 많이 사용됩니다.
표형태의 다량의 데이터를 직렬화시 CSV가 많이 쓰이고 구조적인 데이터는 이전에는 XML을 많이 사용했으며 최근에는 JSON형태를 많이 사용하고 되고 있습니다.
여기서는 CSV와 JSON만 살펴보겠습니다.
CSV 데이터를 표현하는 가장 많이 사용되는 방법 중 하나로 콤마(,) 기준으로 데이터를 구분하는 방법입니다. 자바에서 사용방법
자바에서는 Apache Commons CSV, opencsv 등의 라이브러리 등을 이용할 수 있습니다. 예제에서는 문자열로 단순히 변경했습니다.자바에서는등의 라이브러리 등을 이용할 수 있습니다.
JSON 최근에 가장 많이 사용하는 포맷으로 자바스크립트(ECMAScript)에서 쉽게 사용 가능하고,
다른 데이터 포맷 방식에 비해 오버헤드가 적기 때문에 때문에 인기가 많습니다. 자바에서 사용방법
자바에서는 Jackson, GSON 등의 라이브러리를 이용해서 변환할 수 있습니다. JSON도 물론 이렇게 직접 문자열을 만들일은 거의 없습니다.자바에서는등의 라이브러리를 이용해서 변환할 수 있습니다.
위에 언급한 CSV, JSON 형태의 직렬화는 익숙한 사람이 많을 것입니다.
CSV 같은 경우 표 형태의 데이터에서 많이 사용되며, JSON 같은 경우는 구조적인 데이터를 전달하는 API 시스템 등에서 많이 사용하고 있기 때문입니다.
이진 직렬화 방법
직렬화뿐만 아니라 전송 방법에 대한 부분도 이야기하고 있지만 여기서는 직렬화 부분만 이야기하겠습니다.
종류로는 Protocol Buffer(이하 프로토콜버퍼) Apache Avro 등이 있습니다.
기타
지면 관계상 프로토콜 버퍼만 한번 살펴보겠습니다. (살펴보면 알겠지만 직렬화하기 위한 패턴은 비슷합니다.) 데이터 변환 및 전송 속도에 최적화하여 별도의 직렬화 방법을 제시하는 구조입니다.직렬화뿐만 아니라 전송 방법에 대한 부분도 이야기하고 있지만 여기서는 직렬화 부분만 이야기하겠습니다.종류로는등이 있습니다.기타지면 관계상 프로토콜 버퍼만 한번 살펴보겠습니다. (살펴보면 알겠지만 직렬화하기 위한 패턴은 비슷합니다.)
Protocol Buffer(이하 프로토콜 버퍼)
프로토콜 버퍼는 구글에서 제안한 플랫폼 독립적인 데이터 직렬화 플랫폼입니다. 자바에서 사용방법
프로토콜 버퍼는 특정 언어 또는 플랫폼에 종속되지 않는 방법을 구현하기 위해 직렬화 하기 위한 데이터를 표현하기 위한 문서가 따로 있습니다.
이렇게 기술된 member.proto 문서를 프로토콜 버퍼 컴파일러 를 이용해서 개발하기 원하는 언어(여기서는 자바)로 변환해야 합니다.
(프로토콜 버퍼 컴파일러는 별도로 설치하거나 Gradle, Maven등 의 빌드 도구를 이용하면 됩니다.)
자바로 변환하게 되면 프로토콜 버퍼 형태의 Member 클래스가 생성됩니다.
자바 직렬화와 다른 점은 데이터 스펙을 표현하기 위한 문서가 존재하는 부분입니다. 그 이외에는 대부분 동일합니다.
링크 그 외 여러가지 직렬화 방법이 있는 있지만 여기서 다 다루지는 못하지만 직렬화 관련 좋은 포스팅이 있어서 추천드립니다.
그럼 다시 왜 자바 직렬화를 사용하는지 이야기해보겠습니다. CSV, JSON, 프로토콜 버퍼 등은 시스템의 고유 특성과 상관없는 대부분의 시스템에서의 데이터 교환 시 많이 사용됩니다.
하지만 "자바 직렬화 형태의 데이터 교환은 자바 시스템 간의 데이터 교환을 위해서 존재한다."고 생각하시면 됩니다.
from http://action713.tistory.com/1653 by ccl(A) rewrite - 2021-12-07 15:01:17