
직렬화(Serializable)란
자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술 및 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 칭한다.
즉 바이트 스트림(stream of bytes) 형태로 포맷시키는 기술이다.
serialVersionUID란
직렬화하면 내부에서 자동으로 SerialVersionUID라는 고유의 번호를 생성하여 클래스의 버전을 관리한다.
이 UID는 직렬화와 역직렬화할 때 중요한 역할을 한다.
이 값이 맞는지 확인 후 처리하기 때문에, SerialVersionUID가 맞지 않는다면 java.io.InvalidClassException 예외가 발생하게 된다.
serialVersionUID를 선언하지 않아도 컴파일러가 default로 값을 만들어준다고 한다.
하지만 이 값은 컴파일러의 구현에 따라 달라질 수 있기 때문에 역직렬화 시 예기치 못하게 실패할 수도 있다고 한다.
참고)https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A7%81%EB%A0%AC%ED%99%94Serializable-%EC%99%84%EB%B2%BD-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0
https://velog.io/@whitebear/%EC%9E%90%EB%B0%94-%EC%A7%81%EB%A0%AC%ED%99%94-%ED%99%95%EC%8B%A4%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0
https://velog.io/@hellonewtry/%EC%9E%90%EB%B0%94-%EC%A7%81%EB%A0%AC%ED%99%94%EB%9E%80-serialVersionUID-%EB%9E%80