Serialization(객체의 직렬화) - 직렬화(serialization), 역직렬화(deserialization)

CODEDRAGON Development/Java

반응형

 

Serialization(객체의 직렬화)

·         모든 데이터의 흐름은 바이트 전송으로 이루어 집니다. 이것은 객체도 마찬가지이며, 이때 사용되는 개념이 Serialization입니다.

·         객체의 직렬화란 객체를 스트림(stream)으로 파일에 저장하는 방법입니다.

·         객체의 내용을 바이트 단위로 변환하여 파일 또는 네트워크를 통해서 스트림(송수신)이 가능하게 하는 것을 의미합니다.

·         객체를 직렬화 하기위해서는 Serializable 인터페이스와 Externalizable 인터페이스를 구현해야 합니다.

 

·         직렬화의 대상이 되는 인스턴스의 클래스는 java.io.Serializable 인터페이스를 구현해야 합니다.

·         Serializable 인터페이스는 ‘직렬화의 대상'임을 표시하는 인터페이스일 뿐, 실제 구현해야 할 메소드가 존재하지 않는 인터페이스입니다.

 

 

 

Serializable vs Deserializable(직렬화와 역직렬화)

직렬화

(serialization)

·         인스턴스가 파일에 저장되는 과정(저장을 위해 거치는 과정)

·         객체를 데이터 스트림으로 만드는 것

·         객체에 저장된 데이터를 스트림에 쓰기위해 연속적인(serial) 데이터로 변환하는 것

역직렬화

(deserialization)

·         파일(스트림)에 저장된 인스턴스를 복원하는 과정

·         스트림으로부터 데이터를 읽어서 객체를 만드는 것

  

객체를 저장한다는 것(Serialization)은 객체의 모든 인스턴스변수의 값을 저장하는 것입니다. 그리고 저장했던 객체를 다시 생성하려면(Deserialization) 객체를 생성한 후에 저장했던 값을 읽어서 생성한 객체의 인스턴스 변수에 저장하는 것입니다.