-
자바 직렬화 & 역직렬화(1)_기본 지식Java 2023. 10. 8. 21:15
직렬화
- 자바의 Object, Data를 다른 컴퓨터의 자바 시스템에서도 사용할 수 있도록 바이트 스트림 형태로 연속적인 데이터로 변환하는 포맷 변환 기술
- 역직렬화는 반대의 의미를 가진다.
- 바이트 스트림 : 스트림은 클라이언트나 서버 간에 출발지 목적지로 입출력하기 위한 데이터가 흐르는 통로를 말한다. 자바는 스트림의 기본 단위를 바이트로 두고 있기 때문에, 네트워크, 데이터베이스로 전송하기 위해 최소 단위인 바이트 스트림으로 변환하여 처리한다.

직렬화의 응용
* 휘발성이 있는 캐싱 데이터를 영구 저장이 필요할때 사용
- 서블릿 세션
- 단순히 세션을 서블릿 메모리 위에서 운용한다면 직렬화를 필요로 하지 않지만, 만일 세션 데이터를 저장 & 공유가 필요할때 직렬화를 이용한다.
- 캐시
- 데이터베이스로부터 조회한 객체 데이터를 다른 모듈에서도 필요할때 재차 DB를 조회하는 것이 아닌, 객체를 직렬화하여 메모리나 외부 파일에 저장해 두었다가 역직렬화하여 사용하는 캐시 데이터로서 이용이 가능하다.
자바 직렬화의 장점
* JSON 형태로 객체 데이터를 저장해두면 다른 언어에서도 범용적으로 사용이 가능한데, 왜 직렬화로 오직 자바 프로그램에서만 사용할까?
- 직렬화는 자바 고유 기술인 만큼 자바 시스템에 최적화되어 있다.
- 자바의 광활한 레퍼런스 타입에 대해 제약없이 외부에 내보낼 수 있다.
- 자바의 컬렉션, 클래스, 인터페이스는 외부에 내보내기 위해 각 데이터를 매칭시키는 별도의 파싱이 필요하다.
- 직렬화 기본 조건을 맞춰 사용한다면 별도의 파싱을 할 필요 없이 외부에 보낼 수 있다.
- 역직렬화를 통해 읽어들이면, 데이터 타입이 자동으로 맞춰지기 때문에 클래스 기능을 바로 사용할 수 있다.
출처)
'Java' 카테고리의 다른 글
자바 직렬화 & 역직렬화(3)_버전 관리 (0) 2023.10.09 자바 직렬화 & 역직렬화(2)_사용법 (0) 2023.10.09 JAVA 접근 제어자(access modifier) (0) 2023.10.08 자바 Garbage Collection에 대한 개념 (0) 2023.10.08 자바 JVM의 런타임 데이터 영역 (Runtime Data Area) 자세한 구조 (0) 2023.10.08