[ 직렬화 ] : 메모리에서 디스크 형태로 데이터를 변환한다. 네트워크 통신 형태로 변경
[ 역직렬화 ] : 디스크 데이터를 읽어들이고, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환
직렬화와 역직렬화를 간단하게 설명하자면 우리가 쓰는 프로그래밍 코드에서는 데이터 형식을 두가지로 나눈다.
[ 값 형식 데이터 ] : int, float, char 등 값 형식 데이터는 스택에 메모리가 쌓이고 직접 접근이 가능
[ 참조 형식 데이터 ] : 객체와 같은 참조 형식 변수를 선언하면 힙 메모리에 할당되고, 스택에서는 힙 메모리를 참조
이 때 참조 형식 데이터는 실제 값이 아닌 메모리 번지주소를 알고 있어서 만약 재부팅되면 주소가 달라져 있어서 이후에 찾을 수 없는 데이터가 된다. 최종으로 직렬화를 하게 된다면 주소로 전달되던 값을 텍스트나 바이너리 형태로 변경하여 저장하고 통신하였을 때 유의미한 데이터 교환을 할 수 있다.
종류 : CSV, XML, JSON
특징 : 사람이 읽을 수 있는 형태, 저장공간 효율성이 떨어지고 파싱하는 시간이 오래걸림, 테이터 양이 적을 때 주로 사용, 최근에는 JSON 형태로 많이 저장, 모든 시스템에서 사용 가능
종류 : Binary
특징 :사람이 읽을 수 없는 형태, 저장 공간 효율성이 높고 파싱하는 시간이 적게 걸린다. 테이터의 양이 많을 때 주로 사용, 모든 시스템에서 사용 가능
자바 시스템 내부에서 사용되는 개체 또는 데이터를 외부 자바 시스템에서도 사용할 수 있도록 바이트 형태로 변경, JVM 메모리에 (힙, 스택) 형태로 존재하는 데이터들을 바이트 형태로 변경
간단하게 바이트에서 객체 형태로 변경하는 것. 직렬화된 바이트 형태의 데이터는 객체 형태로 바꾸어 JVM에 상주시킨다.