직렬화란?
- 객체의 상태를 바이트 스트림으로 변환하는 과정이다.
- JVM의 메모리(heap or stack)에 상주되어 있는 객체 데이터를 직렬화된(연속적인) 바이트 형태의 데이터로 변환하는 것
역직렬화란?
- 바이트 스트림을 다시 원래의 객체로 변환하는 과정이다
직렬화를 하는 경우
- 객체의 상태를 파일에 저장하려고 할 때
- 네트워크 통신을 하려고 할 때
JAVA에서 직렬화를 하는 방법
- 객체의 타입이 primitive type이거나 java.io.Serializable 인터페이스를 상속받아야 한다(Serializable 인터페이스는 구현해야 하는 메소드가 없다 오직 JVM에게 직렬화될 수 있다는 것을 알려주는 역할만)
public class User implements Serializable {
private String name;
private int age;
private String email;
@Override
public String toString() {
return String.format("User name: %s, age: %s, email: %s", name, age, email);
}
}
다음과 같이 Serializable 인터페이스를 구현한다