본문 바로가기
Programing Language/JAVA

직렬화, 역직렬화

by doriver 2024. 10. 9.

직렬화(Serialization)

객체 데이터를 통신하기 쉬운 포멧(Byte,CSV,Json..) 형태로 만들어주는 작업
연속적인 데이터(스트림)로 변형하여 전송 가능한 형태로 만드는 것

역직렬화(Deserialization)

직렬화된 데이터를 다시 객체의 형태로 만드는 것

 

직렬화는 왜 필요한가

자바에는 원시타입(Primitive Type)이 byte,short,int,long,float,double,boolean,char 총 8가지가 있다.
그리고 그 외 객체들은 주소값을 갖는 참조형 타입이다.

 

원시타입은 stack에서 값 그 자체로 갖고있어 외부로 데이터를 전달할때, 값을 일정한 형식의 raw byte 형태로 변경하여 전달할 수 있다.

하지만

객체의 경우 실제데이터는 Heap영역에 존재하고, stack에서는 Heap영역에 존재하는 객체의 주소(메모리 주소)를 갖고 있다.

 

주소값을 다른 으로 전송하는건 의미가 x
주소값의 데이터(실체)를 Primitive 한 값 형식 데이터로 변환하는 작업을 거친 후, 전달해야한다.

 

자바에서 직렬화를 하는 방법 : Serializable 인터페이스 구현

class Sample implements Serializable {
}

'Programing Language > JAVA' 카테고리의 다른 글

Java, Js 변수 차이점  (0) 2025.02.25
메서드 안에서 변수값 변하는경우  (0) 2024.11.13
Serializable, Throwable, Exception  (0) 2024.09.28
정수를 표현하기위한 자료형  (1) 2024.09.04
java.util.Optional  (0) 2024.05.22