인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Mountain님의 프로필 이미지
Mountain

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Catalogs Microservice - 기능 구현 ①

직렬화에 대한 추가질문

작성

·

487

3

안녕하세요 강사님. 정성스러운 강의 감사히 잘 듣고 있습니다.
 
해당 강의 질문 내역 중 serializable 인터페이스를 구현한 객체에 대해서 아래와 같이 답변해 주신 것을 확인했습니다.
 
과정에서 특정 클래스에만 직렬화를 한것은 특별한 이유없이 작업된 것 같습니다. CatalogEntity에도 직렬화를 해 주는 것이 좋습니다.
 
위 답변주신 내용을 저는 CatalogEntity와 CatalogDto 객체에는 Serializable이 필요하고, ResponseCatalog는 없어도 된다(?)로 이해했습니다.
 
질문드리고 싶은 것은 아래 2가지 입니다..
 
1. 객체에 serializable의 구현이 필요한 기준은 무엇이 되면 좋을까요 ??
 
2. 현재 강의에서 진행중인 프로젝트에서 serializable을 구현하지 않음으로써 발생할 수 있는 상황이 존재할까요 ??
(CatalogDto에 Serializable을 구현하지 않고 /catalogs 호출까지는 문제(에러)를 직면하지 못했습니다.)
 
부족한 경험으로 인해 직렬화에 대한 개념이 추상적으로만 다가와 어려운 마음에 질문드립니다.
 
감사합니다.

답변 1

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다. 

자바에서 직렬화는 자바 메모리에 있는 객체를 영속화하거나 네트워크를 통해 다른 쪽으로 전송하는 경우에 바이트 형식으로 데이터를 변환하기 위해 사용합니다. 예를 들어, 네트워크 통신에서 PC난 애플리케이션, 서비스 간에 서로 사용하는 메모리 공간 주소가 다를 수 있습니다. 특히, 참조형 데이터의 경우에 이를 Value Type으로 변환하기 위해 사용한다고 보시면 좋을 것 같습니다. 자바에서 말하는 기본 데이터 타입이 아니라, 클래스 타입은 직렬화를 통해 저장되거나 다른 네트워크로 전송된다고 보시면 될 것 같습니다. 

@RestController는 @Controller + @ResponseBody가 포함된 처리를 하고 있습니다. HttpMessageConvertter를 이용하여 ResponseBody에 자동으로 JSON 형태의 데이터로 변환하여 저장하고 있으며, 프레이워크에서 자동으로 이 부분을 처리해 주고 있어서 Catalogs 작업에는 큰 무리 없이 실행될 수 있습니다. 

감사합니다.

Mountain님의 프로필 이미지
Mountain
질문자

안녕하세요 강사님. 

"객체를 영속화하거나 네트워크를 통해 다른 쪽으로 전송이 필요한 클래스" 에는 serializable을 붙여주어야 가능하다로 이해했습니다.

직렬화에 대해 조금더 직관적인 이해하는데 도움이 되었습니다. 추가적인 부분은 스스로 학습해보겠습니다.

친절한 답변 감사드립니다 !

Mountain님의 프로필 이미지
Mountain

작성한 질문수

질문하기