관리 메뉴

피터의 개발이야기

[JAVA] Serialization, 직렬화와 역직렬화 본문

Programming/JAVA

[JAVA] Serialization, 직렬화와 역직렬화

기록하는 백앤드개발자 2021. 1. 24. 08:00
반응형

개발자는 데이터를 다루는 사람들입니다. 데이터는 다양한 형태와 속성으로 존재하고 있고 또 어디론가 전달됩니다.
이런 데이터의 흐름과 관련된 용어를 공부하였습니다. 아래의 내용은 여기 블러그를 공부한 내용을 복붙하였습니다.

 

 

직렬화, 역직렬화란?


직렬화
- 객체에 저장된 데이터를 I/O 스트림에 쓰기(출력) 위해 연속적인(serial) 데이터로 변환하는 것

역직렬화
- I/O 스트림에서 데이터를 읽어서(입력) 객체를 만드는 것

자바에서 직렬화와 역직렬화는 객체를 파일로 저장하거나 네트워크를 통해 전송하기 위해 제공되는 기능이다.
객체는 '인스턴스 변수의 집합'이므로 객체를 저장/전송하는 것은 객체의 인스턴스 변수의 값을 저장/전송하는 것과 동일하다.

 

ObjectInputStream과 ObjectOutputStream

자바에서는 객체의 직렬화, 역직렬화를 위해 ObjectInputStream과 ObjectOutputStream을 제공한다.

객체를 스트림에 쓰거나(출력) 읽는 기능(입력)을 제공하는 보조스트림(기반스트림 필요)

ObjectOutputStream extends OutputStream
- 직렬화 : 스트림에 객체를 출력하기 위해 사용
- writeObject()

ObjectInputStream extends InputStream
- 역직렬화 : 스트림으로부터 객체를 입력받기 위해 사용
- readObject() : Object로 리턴되므로 형변환 필요

 

 

JSON 직렬화, 역직렬화

지금까지는 객체 직렬화를 JVM과 ObjectInputStream/ObjectOutputStream에 위임하는 방식이었지만 XML, JSON과 같은 포맷을 이용한 직렬화도 가능하다. 이로 인한 장점은 다른 환경, 다른 언어로 만들어진 어플리케이션과도 통신이 가능해진다는 것이다.

 

JSON 파싱, 처리 라이브러리를 사용하여 자바 객체를 JSON으로 직렬화하거나 JSON 데이터를 자바 객체로 역직렬화할 수 있다.

 

 

 

반응형
Comments