Java

직렬화

나의 오류는 누군가 겪었던 오류 2023. 10. 3. 00:43
Serializable

Serializable(직렬화)란 자바 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 메커니즘

다른 하드웨어로 저장 할 때 직렬화가 꼭 필요!

 

Serializable 인터페이스를 implements하여 구현
객체 직렬화 시 private 필드를 포함한 모든 필드를 바이트로
변환하지만 transient키워드를 사용한 필드는 직렬화에서 제외

 

serialVersionUID 필드

직렬화한 클래스와 같은 클래스임을 알려주는 식별자 역할로
컴파일 시 JVM이 자동으로 serialViersionUID 정적 필드를 추가해
별도로 작성하지 않아도 오류는 나지 않지만
자동 생성 시 역직렬화에서 예상하지 못한 InvalidClassException을 유발할 수 있어 명시 권장

public class Person implements Serializable{

	private static final long serialVersionUID = - 6423919775137290062L;
	...
}