티스토리 뷰

int (원시 타입)과 Integer (래퍼 클래스) 사이에서 선택할 때 고려해야 할 몇 가지 중요한 차이점이 있습니다:

  1. Nullability:
    • int: null 값을 가질 수 없으며, 초기화되지 않으면 기본값은 0입니다.
    • Integer: null 값을 가질 수 있습니다.
    DB 컬럼이 null 값을 허용한다면, Integer를 사용하는 것이 적절합니다. 이렇게 하면 Java 코드 내에서 null 값을 제대로 처리할 수 있습니다.
  2. Overhead:
    • int: 원시 타입이기 때문에 메모리 및 성능 면에서 추가적인 오버헤드가 없습니다.
    • Integer: 객체이므로 추가적인 메모리 및 성능 오버헤드가 있을 수 있습니다.
  3. Boxing and Unboxing:
    • 자바에서는 원시 타입과 래퍼 타입 간에 자동 변환 (오토 박싱 및 언박싱)이 발생합니다. 이는 런타임에 약간의 성능 저하를 초래할 수 있습니다.
  4. 엔터티 변경 감지:
    • JPA와 같은 ORM에서는 엔터티의 변경을 감지하기 위해 필드 값의 변경을 추적합니다. Integer와 같은 래퍼 타입의 경우, 두 개의 객체가 동일한 값을 가지더라도 다른 객체로 인식될 수 있어서 변경 감지에 영향을 줄 수 있습니다.

결정을 내릴 때 고려해야 할 주요 요소는 nullability입니다. DB 컬럼이 NOT NULL 제약 조건이 있는 경우 원시 타입 int를 사용하는 것이 간단하고 효과적일 수 있습니다. 그러나 NULL 값을 허용해야 하는 경우, null 처리와 관련된 버그를 피하기 위해 Integer를 사용하는 것이 좋습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크