본문 바로가기
Java의 정석 기초편(남궁성) 정리 + a/15. 입출력

34. 직렬화

by doriver 2024. 4. 16.

직렬화( serialization )

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

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

스트림으로부터 데이터를 읽어서 객체를 만드는것을 역직렬화(deserialization)라 한다

 

객체를 저장하거나 전송하려면 직렬화를 해야한다

 

( 객체를 저장한다 ) = 객체의 모든 인스턴스 변수의 값을 저장한다

( 저장했던 객체를 다시 생성 ) = 객체를 생성한후 저장했던 값을 읽어서 생성한 객체의 인스턴스변수에 저장

 

객체는 클래스에 정의된 인스턴스변수의 집합. 객체에는 클래스변수나 메서드가 포함되지 않는다.

https://dorivertt.tistory.com/336

 

JVM 메모리 공간 , 변수와 데이터 , Garbage Collector

자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리를 한다. 각 변수의 생

dorivertt.tistory.com

 

직렬화( 스트림에 객체를 출력 )에는 ObjectOutputStream을 사용

역직렬화( 스트림으로부터 객체를 입력 )에는 ObjectInputStream을 사용

 

직렬화가 가능한 클래스를 만드는 방법

: 직렬화하고자 하는 클래스가 java.io.Serializable 인터페이스를 구현하도록 하면 된다

public class User implements java.io.Serializable {

}

Serializable인터페이스는 아무 내용도 없는 빈 인터페이스지만, 직렬화를 고려하여 작성한 클래스인지를 판단하는 기준이 된다.