새소식

Programming Language

Java serialVersionUID 자동 생성 방법과 정리

  • -

자바에서 데이터 전송은 객체이건 클레스이건 결국 바이트 타입으로 전송하게 되어진다.

데이터 전송 시 재 변환 가능한 형태로 변형되어지고 다시 읽었을 때 객체의 자료구조를 그래도 보존하지 않으면 안된다.(Serialization)

5.0 이 후 부터는 Serialization 인터페이스를 구현한 클래스에서 static fianl long 타입의 serialVersionUID 상수를 선언 하라는 경고 문구를 이클립스의 warning 아이콘으로 확인 할 수 있다.

만일 serialVersionUID를 지정하지 않으면 실행시점에서 JVM이 디폴트 값을 산정하게 되며,그 알고리은 Java(TM) Object Serialization Specification 정의된 것을 따른다고 한다.

그러나 모든 serialization이 필요한 클래스에는 명시적으로 serialVersionUID를 선언해줄것을 강력하게 권유하고 있는데 그 이유는  디폴트 serialVersionUID 계산은 클래스의 세부 사항을 매우 민감하게 반영하기 때문에 컴파일러 구현체에 따라서 달라질 수 있어 deserialization(serialization 했던 객체를 복구하는 과정)과정에서 예상하지 못한 InvalidClassExceptions을 유발할 수 있다. 라는 이유 때문이다.

즉 서로 다른 자바 컴파일러 구현체 사이에서도 동일한 serialVersionUID값을 얻기 위해서는 명시적으로 serialVersionUID값을 선언해야 하며 가능한 serialVersionUID을 private 으로 선언하라는 것이다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.