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