Java 직렬화(Serialization)

박성수·2022년 5월 24일
0

알고쓰자

목록 보기
1/2

직렬화란

자바 시스템 내부에서 사용되는 Object(Data)를 전송/저장 등이 가능하도록 byte 형태로 변환하는 기술을 의미한다.

byte를 다시 Object(Data) 변환하는 기술을 역직렬화라고 한다.

왜 사용하는가?

직렬화/역직렬화를 왜 사용하는지를 이해하려면 자바의 메모리 구조에 대한 기본적인 내용을 먼저 알아야 한다.

자바는 JVM이 메모리를 관리해주며 타입은 크게 2가지로 나뉜다.
1. 값 형식 데이터(스택)
2. 참조 형식 데이터(힙)

이 때 중요한 것은 디스크에 데이터를 저장하거나 통신시에는 값 형식 데이터만 사용 가능하다는 것이다. 참조 형식 데이터는 주소값을 가지게 되는데 메모리 주소값은 전송이나 저장에서는 무의미한 값이 된다.

어떻게 사용하는가?

java.io.Serializable 인터페이스를 구현하면 해당 객체는 직렬화할 수 있는 조건이된다.

public interface Serializable {
}

직렬화를 구현할 때, serialVersionUID라는 값을 지정해줘야 한다. (만약 별도로 지정하지 않으면 자바 소스가 컴파일될 때 자동으로 생긴다.)

public class TestSerializable implements Serializable {

    private static final long serialVersionUID = 362498820763181265L;
}

serialVersionUID는 객체의 식별자로 버전을 명시한다.

profile
Java 백엔드 개발자입니다. 제가 생각하는 개발자로서 가져야하는 업무적인 기본 소양과 현업에서 가지는 고민들을 같이 공유하고 소통하려고 합니다.

0개의 댓글