JAVA

[JAVA] Serializable

오선지♬ 2024. 9. 20. 20:44
728x90
반응형

Serializable는 Java에서 객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크로 전송할 수 있도록 하는 인터페이스입니다. 이 인터페이스는 데이터 전송이나 저장 후에 다시 원래 객체로 복원할 수 있는 기능을 제공합니다.

주요 특징:

  • 마커 인터페이스: Serializable은 아무 메서드도 포함하지 않는 마커 인터페이스입니다. 이 인터페이스를 구현한 클래스는 직렬화가 가능하다는 의미로 Java 시스템에서 인식됩니다.
  • 직렬화 (Serialization): 객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송할 수 있게 합니다.
  • 역직렬화 (Deserialization): 직렬화된 바이트 스트림을 다시 객체로 복원하는 과정입니다.
import java.io.Serializable;

public class User implements Serializable {
    private static final long serialVersionUID = 1L; // 직렬화 버전 관리용 ID
    private String name;
    private int age;

    // 생성자, getter, setter 등의 코드
}

직렬화 과정:

  1. 객체를 파일이나 네트워크로 전송할 때, 객체를 직렬화해야 합니다.
  2. 직렬화된 데이터는 저장되거나 전송된 후, 다시 역직렬화를 통해 원래 객체로 복원됩니다.

유의점:

  • transient 키워드를 사용하여 특정 필드는 직렬화 과정에서 제외할 수 있습니다.
  • 직렬화되지 않은 객체는 NotSerializableException을 발생시킵니다.

이 인터페이스는 주로 데이터 전송, 파일 입출력 및 세션 관리와 같은 곳에서 자주 사용됩니다.

728x90
반응형