serialVersionUID 의 용도

By | 2022년 9월 5일
Table of Content

serialVersionUID 의 용도

Serializable

직렬화 (implements Serializable) 는 서버간 데이타를 전송할 때,
송신 서버에서 클래스를 전송가능한 바이너리 형식으로 변경하고,
수신 서버에서 전송된 바이너리 데이타를 클래스로 변환하게 된다.

서버간 전송뿐만 아니라,
클래스를 파일로 저장할때도 직렬화가 이루어진다.

serialVersionUID 의 기능

serialVersionUID 는 직렬화 (implements Serializable) 를 할 때 사용한다.

송신 서버에서는 serialVersionUID 를 키값으로 바이너리 형식으로 변경하고,
수신 서버에서는 serialVersionUID 를 이용해 바이너리를 클래스로 변환한다.

serialVersionUID 자동할당

serialVersionUID 를 지정해 주지 않으면,
Compiler 가 자동으로 serialVersionUID 값을 생성한다.

문제는 송/수신 서버의 Compiler 버전이 다르게 되면,
InvalidClassException 이 발생한다.
또한, 전송하려는 Class 에 변경이 생긴경우,
serialVersionUID 값 이 변경될 수 있다.

serialVersionUID 수동할당

IntelliJ 를 이용하면 serialVersionUID 를 생성해주는 메뉴를 확인할 수 있다.

Ctrl + Shift + A 를 누른다.

Serializable class without ‘serialVersinoUID’ 를 활성화한다.

마우스를 가져다 대면, serialVersionUID 를 자동생성해 주는 메뉴가 표시된다.

답글 남기기