[java] Serializable(시리얼라이즈)- 직렬화

리무 rimu ·2023년 5월 25일
0

Java

목록 보기
33/35

시리얼라이즈(Serializable)란?

java에서는 오브젝트의 정보를 비트열로 만들어 파일 등에 기록하고,
다시 읽어 들여 원래의 오브젝트를 만들 수 있음!
이 때, 오브젝트를 비트열화하여 출력스트림으로 기록하는 것을 시리얼라이즈,
입력 스트림으로 읽어 들여 원래의 오브젝트로 만드는 것을 디시리얼라이즈라고 한다.

  • Serializable 인터페이스는 아무런 메소드가 없고 단순히 자바 버추얼 머신에게 정보를 전달하는 의미만을 가짐

시리얼라이즈를 하기 위해서는 클래스에서 Serializable 인터페이스를 구현할 필요가 있음!
이 인터페이스에는 메서드가 없기 때문에, 오버라이딩할 필요는 없음~~

요렇게 사용하면 됩니다 🤗

import java.io.*;
class A implements Serializable {}

비트열화한 오브젝트의 입출력을 수행하기 위해서는
ObjectInputStream 클래스와 ObjectOuputStream 클래스를 사용한다.
이것들은 바이트 스트림을 사용하는 클래스!

SerialVersionUID

값의 의미 : 해당 객체의 버전을 명시하는 데 사용됨
여기서 serialVersionUID를 별도로 지정하지 않으면 자바 소스가 컴파일 될 때 자동으로 생김
serailVersionUID를 지정해주는 이유는 아래와 같음

마샬링(marshalling)

  • 데이터를 byte 단위의 데이터로 변환시키는 작업을 의미
  • 자바에서 마샬링을 적용할 수 있는 데이터로는 원시 자료형(boolean, char, byte, short, int, long, float, double)와 객체 중에서 Serializable 인터페이스를 구현한 클래스로 만들어진 객체
  • 객체는 원시 자료형과 달리 객체 내부의 멤버 변수가 다르기 때문에 크기가 달라지는데 이런 문제를 해결하는 클래스가 ObjectOutputStream 클래스입니다.
profile
JAVA / SQL / Spring 을 공부하고 있습니다 🐥

0개의 댓글