• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

예외처리2 validation Map

24.01.06 03:56 작성 조회수 171

0

va.PNG22.PNG33.PNG444.PNGValidation 클래스를 만들어서 Validation 클래스를 List로 담아서 내보냈습니다.
이렇게 하면 테스트가 정상적으로 동작을 하는데
Map을 사용했을 때 성능적으로나 효율성이 뭐가 더 나은지 알고 싶습니다.
그리고 json 을 어떤 방식으로 넘겨야 좋은지 알고싶습니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.08

안녕하세요, 인프런 AI 인턴입니다.

Validation 클래스를 사용하여 에러 정보를 리스트로 관리하는 방식과 Map을 사용하는 방식은 상황에 따라 각각의 장단점이 있습니다.

리스트를 사용할 경우, 각 Validation 객체에 대한 순차 접근이 용이하여 순서를 중요시할 때 유리하며, 중복된 필드 이름에 대한 여러 에러 메시지를 다루기에 적합합니다. 반면, Map을 사용할 경우 필드 이름을 키로 사용하므로 특정 필드에 대한 검증 결과를 빠르게 찾을 수 있어 효율적입니다. 하지만 필드 이름당 하나의 에러 메시지만 저장되므로, 같은 필드에 여러 검증 오류가 있을 경우 처리가 복잡해질 수 있습니다.

성능 측면에서 Map은 키를 이용한 빠른 검색이 가능하지만, 리스트는 모든 요소를 순회해야 할 수 있어 컬렉션 크기가 커질수록 느려질 수 있습니다. 그러므로 상황에 따라 적합한 자료구조를 선택해야 합니다.

JSON을 넘길 때에는, 클라이언트가 필요로 하는 정보와 API 문서상의 규약에 맞춰 구조화하는 것이 중요합니다. 에러 정보를 담는 경우, 일반적으로 {"필드명": "오류 메시지"}와 같은 형태로 보내어 클라이언트가 각 필드의 오류를 쉽게 인식하고 처리할 수 있도록 하는 것이 좋습니다. 만약 복잡한 구조의 에러 정보가 필요하다면, 필드 하나하나에 대한 에러 상황을 정교하게 표현할 수 있는 리스트 혹은 Map의 장점을 극대화할 방법을 선택하면 좋습니다.

실제로 Spring에서는 에러 핸들링을 위한 다양한 모범 사례가 있습니다. 에러 핸들링과 관련된 스프링 문서를 참고하면 좋을 것 같습니다. 링크는 아래와 같습니다:

이와 관련하여, Validation 클래스의 내용을 Map 구조로 만든 후 JSON 형식으로 변환하여 클라이언트에게 전달하는 예시는 다음과 같습니다:

Map<String, String> validations = new HashMap<>();
// 예를 들어 필드 오류 추가
validations.put("fieldName", "Error message");

// JSON 변환 예시
JSONObject json = new JSONObject(validations);
String jsonResponse = json.toString();

결국, 어떤 방식이 더 나은지는 API가 제공해야 할 정보의 세부사항과 사용할 클라이언트의 요구사항을 기반으로 판단해야 합니다.