![Java serialVersionUID 자동 생성 방법과 정리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTnPlp%2FbtsDGvaZo7u%2FACqCyuC4re33sfURFdMKrK%2Fimg.jpg)
자바에서 데이터 전송은 객체이건 클레스이건 결국 바이트 타입으로 전송하게 되어진다.
데이터 전송 시 재 변환 가능한 형태로 변형되어지고 다시 읽었을 때 객체의 자료구조를 그래도 보존하지 않으면 안된다.(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 으로 선언하라는 것이다.
'Programming Language' 카테고리의 다른 글
Python pip 패키지 리스트 파일 저장 및 설치 (0) | 2021.06.15 |
---|---|
정규식을 이용한 이메일 주소 검증 코드 (0) | 2017.01.30 |
Korean BioInformation Center(KOBIC) Korea Research Institute of Bioscience & Biotechnology Address: #52 Eoeun-dong, Yuseong-gu, Deajeon, 305-806, KOREA +82-10-9936-2261 e-mail: kogun82@kribb.re.kr Blog: kogun82.tistory.com Homepage: www.kobic.re.kr
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!