본문 바로가기
Backend/Java

[자바의 신] 27장 (ongoing)

by unknownomad 2022. 8. 18.

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

댓글