• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

BoardType 클래스 추가후 직렬화코드

21.05.31 09:54 작성 조회수 123

0

데이타 조회시 Board 타입의 속성값을 갖는 BaseResponse클래스 값이 리턴되는데 ...이번에는 Board 클래스안에 enum 클래스인 BoardType을 추가했다고 해서...왜 갑자기 BaseCodeLabelEnumJsonSerializer 이런 클래스를 만들고 WebConfiguration에는 ObjectMapper 와 mappingJackson~ 메소드를 추가했는지 몰겠네요...

위 두 메소드 설정추가는 BaseCodeLabelEnum 이걸 직렬화하고 json형태로 변환하기 위한 설정인줄은 알겠는데....BoardType이란걸 리턴클래스의 속성값으로 추가하면서부터 왜 갑자기 객체직렬화코드가 들어가게 된건지가 이해가 안가네요...그전에  boardType 없어도 BaseResponse에 대한 직렬화는 필요없는건가요? 

결과적으로 리턴타입이 클래스 오브젝트라 하더라도 기본적으로 json형태로 출력해주는것 같은데 그래서 여쭤보는겁니다. 설령리턴 클래스안의 또 클래스타입이 속성이 있어서 모두 json형태로 출력해주지 않나요? boardType이란걸 추가하고나서부터 왜 직렬화 코드가 나와야 하는건지가 이해가 안갑니다. 그전에 리턴하는 클래스(BaseReponse)에 대해서는 직렬화코드가 왜 필요없었던건지~~

답변 1

답변을 작성해보세요.

0

BaseCodeLabelEnumJsonSerializer를 추가안해도 Board 클래스에 boardType(enum) 추가 만해도 json에 출력이 되는데요.

그런데 출력 되는 값은 오로지 boardType의 value 즉 name() 값만 출력이 됩니다.

boardType에 label 추가하였었는데요. 

NOTICE, FAQ, INQUIRY 값은 코드 형태의 값이므로 사용자에게 안보이는 뒷단에서 관리되는 값이며,

label에 공지사항, 자주묻는질문, 1:1문의는 실질적으로 사용자에게 보이는 텍스트 문구 입니다.

실제로 화면기능을 구현하다보면 목록조회, 상세조회에는 코드값이 아닌 텍스트 문구가 대부분 사용되는경우에 이방법을 사용하면 간단히 사용할 수 있다는 용도로 해당 영상에 사용된거에요. ^^

만약 이부분이 DB로 관리하게되면 코드의 이름을 가져오기 위해 JOIN 을 통하여 가져와야 하는데 불필요한 쿼리가 생기게 됩니다.

하지만 enum을 활용한다면 쉽고 빠르게 할 수 있는 부분입니다.