개념
직렬화(Serializable)
- 자바 시스템 내부에서 사용되는 Object 또는 Data 를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술
- JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술
역직렬화(Deserialize)
- byte 로 변환된 Data 를 원래대로 Object 나 Data 로 변환하는 기술
- 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주 시키는 형태
Serializable
- java.io.Serializable 인터페이스를 상속받은 객체는 직렬화 할 수 있는 기본 조건을 가진다.
- JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있도록 해준다.
- 직렬화 및 역직렬화는 ObjectOutputStream 객체와 ObjectInputStream 객체를 이용한다.
- 직렬화 방법에는 여러 Format이 존재한다. (CSV, XML, JSON)
Serializable를 사용하는 경우
- 생성한 객체를 파일로 저장할 때
- 저장한 객체를 읽어야 할 때
- 다른 서버에서 생성한 객체를 받을 때
- 서블릿 세션 (Servlet Session)
- 캐시 (Cache)