2016년 10월 14일 금요일

[자바학원,Java학원,IT실무교육_탑크리에듀]객체직렬화,serialVersionUID란,java.io.Serializable

객체직렬화,serialVersionUID란,java.io.Serializable

자바객체는 직렬화되어 네트워크를 통해 전송되거나 파일로 써 질수 있다. 이때 객체를 송신측과 수신측에서 같은 객체인지 확인하는 객체의 아이디가 필요한데 이것이 serialVersionUID이다. 어떤 클래스가 직렬화를 위해 java.io.Serializable을 구현하게되면 serialVersionUID static 
멤버변수를 기술하지 않으면 이클립스에서 경고가 나타나게 된다.

serialVersionUID를 자동 생성해 주는 플러그인도 있지만 경고가 뜰때 마우스를 올려 "add generated serial VersionUID"를 클릭해서 만들어 주면 된다.(serialVersionUID는 반드시 static final long 형으로 선언되어야 한다.)

자바에서 런타임에 직렬화가능한 클래스에 버전번호 serialVersonUID를 설정하는데 serialVersionUID를 이용하여  직렬화 복원 중에 직렬화객체의 보낸쪽과 받는쪽에서 객체가 직렬화에 호환성이 있는 클래스인지를 확인하는 용도로 사용된다. 보낸 serialVersionUID와 다른 serialVersionUID를 가지는 객체를 수신측이 로드했을 경우 역직렬화 중에 "InvalildClassException" 이 발생한다.

직렬화 된는 클래스가 SerialVersionUID를 명시적으로 기술하지 않는 경우 JVM에서
serialVersionUID의 디폴트 값을 정의하여 사용한다. 그러나 자바에서는 명시적으로serialVersionUID를 선언할 것을 강력 추천!

댓글 없음:

댓글 쓰기