JAVA 직렬화

김개발세발바닥·2024년 7월 14일

JAVA

목록 보기
11/12

직렬화.

객체를 바이트 스트림으로 변환하여 파일, 데이터베이스 또는 네트워크로 전송할 수 있게 하는 과정이다.
직렬화는 주로 객체의 상태를 저장하고 나중에 복원할 때 사용된다.
이를 통해 객체를 전송하거나 영속화하는 것이 가능해진다.

직렬화의 필요성.

  • 객체의 상태를 파일이나 데이터베이스에 저장할 수 있다.
  • 네트워크를 통해 객체를 다른 JVM으로 전송할 수 있다.
  • 객체를 깊은 복사할 때 직렬화를 사용할 수 있다.

Serializable 인터페이스.

자바에서 객체를 직렬화하려면 해당 클래스가 java.io.Serializable 인터페이스를 구현해야 한다.
이 인터페이스는 아무 메서드도 포함하지 않는 마커 인터페이스다.
즉, 특정 클래스가 직렬화 가능하다는 것을 표시한다.

import java.io.Serializable;

public class Person implements Serializable {
    
    private String name;
    private int age;

    // Constructor, getters, and setters
}

serialVersionUID.

직렬화 한 후 클래스가 바뀌면 serialVersionUID가 변경되므로 역직렬화가 안된다.
이때는 serialVersionUID 직접 지정해야한다.
직렬화된 객체가 클래스의 변경에도 불구하고 동일한 버전임을 확인하는 데 사용되고 정의하지 않으면 컴파일러가 자동으로 생성한다.
하지만 거의 사용 안한다고 한다..

import java.io.Serializable;

public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String name;
    private int age;

    // Constructor, getters, and setters
}

transient.

transient 키워드를 사용하여 직렬화에서 제외할 필드를 지정할 수 있다.
이 키워드를 붙인 필드는 직렬화되지 않는다.

직렬화는 Serializable붙이면 된다 라고 간단히 생각했는데 생각해보면 직렬화가 진정 무엇인지 잘 모르고 사용한 것 같다...

0개의 댓글