[TIL] DTO, Entity에서 Wrapper 클래스를 사용하는 이유
본문 바로가기

Development/TIL

[TIL] DTO, Entity에서 Wrapper 클래스를 사용하는 이유

직렬화 및 역직렬화

  • Primitive 타입의 한계: Java의 기본형(primitive type)은 null 값을 가질 수 없다. 예를 들어, int, long, boolean 같은 타입은 null이 될 수 없으므로, 직렬화 시 null을 표현해야 할 경우 문제가 발생할 수 있다.
  • Wrapper 클래스의 유연성: 기본형에 대응하는 Wrapper 클래스(Integer, Long, Boolean 등)를 사용하면, null 값도 가질 수 있기 때문에 직렬화/역직렬화 과정에서 발생할 수 있는 문제를 방지할 수 있다. 이는 데이터베이스에서의 NULL 값을 표현하거나, JSON 직렬화 시 값이 없음을 표현할 때 유용하다.

DTO와 Entity의 설계

  • DTO의 표현 유연성: DTO는 주로 데이터 전송을 위한 객체로, 클라이언트와 서버 간의 데이터 교환을 목적으로 한다. 이때 값이 없을 수 있는 경우를 위해 Wrapper 클래스를 사용하는 것이 더 안전하며, 프론트엔드에서 null 처리를 보다 쉽게 할 수 있다.
  • Entity의 데이터베이스 연관성: Entity 클래스는 데이터베이스와 직접적인 매핑을 가지며, 데이터베이스의 컬럼이 NULL 값을 가질 수 있는 경우, 이를 적절히 표현하기 위해 Wrapper 클래스를 사용하는 것이 일반적이다.

기본형과 Wrapper 클래스의 차이

  • 기본형: 메모리 사용 효율이 좋고, 성능상 이점이 있지만 null을 가질 수 없다는 한계가 있다.
  • Wrapper 클래스: null 값 표현이 가능하여, 기본형보다 유연하지만, 메모리 사용량이 증가하고, 성능이 떨어질 수 있다. 하지만, 직렬화/역직렬화나 데이터베이스의 NULL 값 처리를 고려하면 Wrapper 클래스를 사용하는 것이 적절하다.