Serialization (직렬화)

yeezze·2022년 6월 10일
0
post-custom-banner

1. Serialization (직렬화)

개념

  • 자바 직렬화란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 이야기한다.
  • 현재 패널에 저장되는 shapes vector객체는 일련의 연속되는 메모리 주소가 아니라 각각 다른 메모리 주소로 구성된다. 더군다나 프로그램을 실행할 때마다 할당받는 메모리 주소도 동적으로 변한다. 때문에 외부에 파일 형태로 내보내고 다시 읽어들이려면 일련의 바이트 스트림으로 변환하는 작업이 필요하다.

조건

자바 기본(primitive) 타입과 java.io.Serializable 인터페이스를 상속 받은 객체는 직렬화 할 수 있는 기본 조건을 가진다. 현재 수업 내에서 구현하고 있는 그림판 프로그램에서는 저장하려고 하는 객체가 TShape이다. 그러므로 TShape 클래스에 implements java.io.Serializable을 적용했다.

방법

java.io.ObjectOutputStream 객체를 이용한다.

현재 수업에서는 java.io.FileOutputStream을 함께 사용하여 File 형태로 직렬화하여 저장했다.

자바 직렬화 뿐만 아니라 다양한 형태의 직렬화 방법이 존재한다. 문자열 형태의 직렬화는 CSV, JSON를 활용하는 방법이 있다. 이 두가지 방법은 시스템의 고유 특성과 상관 없는 대부분의 시스템에서의 데이터 교환 시 많이 사용된다. (모든 시스템 ↔ 모든 시스템)

하지만 ObjectOutputStream을 활용한 자바 직렬화 형태의 데이터 교환은 자바 시스템 간의 데이터 교환을 위해서 존재한다. (자바 시스템 ↔ 자바 시스템)

[참고 자료 : https://techblog.woowahan.com/2550/]

profile
백엔드 개발자 😊
post-custom-banner

0개의 댓글