Java 직렬화, 역직렬화 그리고 serialVersionUID

Java의 object를 직렬화 하고자 할때는 Serializable을 상속만 받으면 되서 매우 편리하다. 그러나 주의해야 할 부분이 있는데 정리하면 다음과 같다.

  1. Java 직렬화는 serialVerionUID로 클래스를 구별한다.
  2. serialVersionUID를 명시하지 않으면 기본적으로 클래스의 해시값을 사용한다.
  3. 그래서 클래스의 필드 추가나 삭제가 빈번한 경우 serialVersionUID를 명시적으로 주지 않으면 역직렬화에 문제가 발생할 수 있다.
  4. 타입에 엄격해 serialVersionUID를 명시하더라도 필드의 추가, 삭제는 없는 값으로 대치가 되지만 타입이 바뀌면 exception이 발생한다.
  5. 일부 라이브러리의 경우 serialVersionUID가 있긴하지만 버전따라 변경될 수 있으므로 Serializable을 상속한다면 반드시 serialVersionUID를 명시하자.


댓글

이 블로그의 인기 게시물

[Protocol] WIEGAND 통신

Orange for Oracle에서 한글 깨짐 해결책

[UI] GNB·LNB·SNB·FNB 용어 설명