..

serialVersionUID: 자바 객체 직렬화의 유효성 검사

1. serialVersionUID란?

자바에서 serialVersionUID는 객체를 직렬화(Serialization)하고 역직렬화(Deserialization)할 때, 해당 클래스가 직렬화된 데이터와 동일한 버전인지를 확인하는 고유 식별값입니다.

2. 왜 필요한가? (유효성 검증)

  • 직렬화: 객체를 파일이나 네트워크 전송을 위해 바이너리 데이터 스트림으로 변환하는 과정입니다. 이때 클래스의 serialVersionUID가 데이터와 함께 저장됩니다.
  • 역직렬화: 데이터를 다시 자바 객체로 복원하는 과정입니다. 이때 클래스 내에 명시된 ID와 데이터에 포함된 ID를 비교합니다.
  • 문제 상황: 만약 클래스 구조가 변경되었는데 ID가 일치하지 않으면 InvalidClassException이 발생하며 복원이 실패합니다.

3. 특징 및 권장 사항

  1. 자동 계산: 개발자가 직접 명시하지 않으면 컴파일 시점에 클래스 구조를 기반으로 컴파일러가 자동으로 값을 생성합니다.
  2. 명시적 선언 권장: 클래스 구조가 미세하게 바뀌더라도 역직렬화 호환성을 유지해야 하는 경우, 개발자가 직접 고정된 값을 할당하는 것이 안전합니다.
    private static final long serialVersionUID = 1L;
    

serialVersionUID는 “이 객체가 내가 알던 그 붕어빵 틀에서 나온 게 맞나?”를 확인하는 도장과 같습니다. 안정적인 분산 시스템 운영을 위해 명시적으로 관리하는 습관을 들이는 것이 좋습니다.