27장 - Serializable과 NIO도 살펴 봅시다
Serializable
정의
Serializable 인터페이스
java.io 패키지
인터페이스의 API에 선언된 변수나 메서드 없음
용도
생성한 객체를 파일로 저장하거나
저장한 객체를 읽거나
객체를 다른 서버로 보내거나
다른 서버에서 생성한 객체를 받을 때
역할
Serializable 인터페이스 구현(implements) 시 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있게 해줌
serialVersionUID
Serializable 인터페이스 구현 후 serialVersionUID라는 값 지정해주는 것을 권장함(별도 지정 안 하면 자바 소스가 컴파일될 때 자동으로 생성됨)
static final long serialVersionUID = 1L;
반드시 static final long으로 선언해야 함
변수명도 serialVersionUID로 선언해야 함
값은 아무런 값으로 지정해줘도 됨(단, 이 값을 지정한 이유가 있기에 필요에 따라 값 변경해야 하는 경우 발생함)
serialVersionUID 용도
해당 객체의 버전 명시용
ex) A 서버 ➡ SerialDTO ➡ B 서버로 전송할 때, A 서버와 B 서버 모두 SerialDTO라는 클래스 있어야 그 클래스의 객체임을 알고 데이터 받을 수 있음. But 만약 A 서버의 SerialDTO가 가진 변수가 3개, B 서버의 SerialDTO가 가진 변수가 4개면 자바가 제대로 처리 못함
➡ 각 서버가 쉽게 해당 객체가 같은지 다른지 확인용으로 serialVersionUID 관리해야 함
클래스 이름이 같더라도 UID가 다르면 다른 클래스로 인식함
같은 UID라도, 변수의 개수나 타입 등이 다면 다른 클래스로 인식함
'Backend > Java' 카테고리의 다른 글
[자바의 신] 29장 (ongoing) (0) | 2022.08.31 |
---|---|
[자바의 신] 28장 (ongoing) (0) | 2022.08.31 |
[자바의 신] 26장 (ongoing) (0) | 2022.08.18 |
[자바의 신] 25장 (ongoing) (0) | 2022.08.18 |
[자바의 신] 24장 (0) | 2022.08.09 |
댓글