티스토리 뷰

공부흔적

SerialVersionUID

주디 𝙹𝚞𝚍𝚢 2021. 6. 21. 17:20

  자바 객체를 파일에 저장하거나 네트워크로 전송하려면 직렬화(바이트 배열로 변환하는 것)를 거쳐 스트림을 통해야 한다. 반대로 직렬화된 객체를 원래의 모양으로 되돌리는 것을 역직렬화라고 한다.

 직렬화와 역직렬화를 거치면서 클래스에 대한 버전 확인을 하고, 이때 사용되는 것이 SerialVersionUID. 명시적으로 선언하지 않아도 자동으로 부여해주지만 그럴 경우 클래스에 변화가 생겼을 때 역직렬화나 직렬화에 문제가 생길 수도 있으므로 개발자가 직접 관리하는 편을 권장한다.


https://ktko.tistory.com/entry/JAVA-%EA%B0%9D%EC%B2%B4%EC%9D%98-%EC%A7%81%EB%A0%AC%ED%99%94Serializable-serialVersionUID

 

자바 객체의 직렬화(Serializable, serialVersionUID)

자바 객체의 직렬화(Serializable) 자바에서 입출력에 사용되는 것은 스트림이라는 데이터 통로를 통해 이동했습니다. 하지만 객체는 바이트형이 아니라서 스트림을 통해 파일에 저장하거나 네트

ktko.tistory.com


http://daplus.net/java-%EB%8B%A8%EC%88%9C%ED%95%9C-1l-%EB%8C%80%EC%8B%A0-%EA%B8%B4-serialversionuid%EB%A5%BC-%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88/

 

[java] 단순한 1L 대신 긴 serialVersionUID를 생성하는 이유는 무엇입니까? - 리뷰나라

클래스가 Eclipse에서 Serializable을 구현할 때 add default serialVersionUID(1L)또는 generated 옵션이 있습니다 serialVersionUID(3567653491060394677L). 나는 첫 번째 것이 더 시원하다고 생각하지만, 두 번째 옵션을 사

daplus.net


 위의 링크를 보면 왜 Serial단순한 1L 대신 길고 복잡한 SerialVersionUID를 사용하는지에 대한 이유가 나와있다. 1L처럼 단순한 값은 누가 이미 사용했을 수도 있기 때문에 길고 복잡한 값일수록 중복될 확률이 적어진다. 그렇기 때문에 고유성을 지키기 쉬워지고 그래서 길고 복잡한 SerialVersionUID를 사용한다는 것이 저 링크에서 말하는 이유이다.

 

300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함