CS

[Java] 데이터 전달 Map과 DTO 장단점

cob 2023. 6. 1. 20:54

 

데이터를 전달, 저장하기 위해서 Map<String, Object>나 DTO를 사용하게 된다. 

 

 


1. Map의 장단점

1-1) 장점

  1. 유연성: Map은 동적으로 필드를 추가하거나 제거할 수 있기 때문에 데이터 구조가 유연합니다. 필요한 데이터만을 담을 수 있어서 데이터 모델이 유동적인 경우에 유용합니다.
  2. 간결성: 데이터를 키-값 쌍으로 저장하기 때문에 구조가 간단하고 직관적입니다. 작은 규모의 데이터를 다룰 때 간편하게 사용할 수 있습니다.
  3. 빠른 프로토타이핑: Map을 사용하면 데이터를 빠르게 구성할 수 있어 프로토타이핑 과정에서 효과적입니다.

 

1-2) 단점

  1. 타입 안정성 부족: Map은 동적으로 필드를 추가하거나 제거할 수 있어서 컴파일 시점에 타입 검사가 이루어지지 않습니다. 따라서, 잘못된 키나 타입을 사용할 수 있어 런타임 오류의 위험이 있습니다.
  2. 가독성 저하: Map은 데이터 구조가 유연하고 동적이기 때문에 필드의 의미를 파악하기 어려울 수 있습니다. 코드를 이해하기 어렵고 디버깅이 복잡해질 수 있습니다.
  3. 오버헤드 :  Map에서 데이터를 추출하고 타입 변환을 수행할 경우 추가적인 오버헤드가 발생

 

 


2. DTO의 장단점

2-1) 장점

  1. 타입 안정성: DTO는 컴파일 시점에 타입을 검사할 수 있기 때문에 타입 안정성이 높습니다. 필드와 메서드를 명확하게 정의하고 타입 변환 과정을 최소화하여 데이터의 일관성을 유지할 수 있습니다.
  2. 가독성과 유지보수성: DTO는 명시적으로 필드를 정의하고 사용하기 때문에 코드의 가독성과 유지보수성이 높습니다. 필드 이름이나 데이터 구조를 확인하는 것이 쉽고, IDE의 자동완성 기능을 활용할 수 있습니다.
  3. 객체지향 설계: DTO는 객체지향 설계 원칙을 따르기에 객체 간의 관계를 명확하게 표현할 수 있습니다. 필드와 메서드를 활용하여 데이터를 조작하고 동작을 정의할 수 있습니다.

 

2-2) 단점

  1. 번거로운 작업: DTO는 필드를 정의하고 값을 할당하는 작업이 필요하기 때문에 초기 구현이나 변경 시 추가 작업이 필요합니다. 필드의 추가나 제거 시 DTO 클래스를 수정해야 하는 번거로움이 있습니다
  2. 오버헤드 : 리플렉션(reflection)을 통해 객체의 필드에 접근하여 값을 설정하거나 가져옵니다. 리플렉션은 실행 시간에 객체의 구조를 분석하고 조작하는 과정이기 때문에 일부 오버헤드가 발생할 수 있습니다.

 

 


3. 결론

DTO나 Map에서 발생하는 오버 헤드는 일반적으로는 미세한 수준이며, 성능상 큰 영향을 미치지 않습니다. 선택적으로 사용하는 것은 개발자의 판단에 따라야 하며, 대부분의 경우 데이터의 유연성과 가독성을 고려하여 DTO를 사용하는 것을 권장합니다.
반응형