[Spring] Entity에서 원시타입과 래퍼클래스를 사용하는 기준

2024. 4. 16. 20:28· BackEnd/Spring Boot🍃
목차
  1. ▶원시타입(Primitive type)과 래퍼클래스(Wrapper Class)란?
  2. ▶Entity에서 원시타입과 래퍼클래스를 사용하는 기준
728x90

개발을 하다보면 Entity에서 필드를 만들 때 원시타입인 long 대신 래퍼클래스인 Long을 사용하는 걸 많이 봤을 것이다.

왜 long를 안쓰고 Long를 쓸까?

이 둘의 차이점은 무엇일까? 궁금해졌다.

 

바로 알아보자.

 

▶원시타입(Primitive type)과 래퍼클래스(Wrapper Class)란?


일단 원시타입은 뭐고 래퍼클래스는 뭘까?

 

 

이 사진을 보면 이해가 될 것이다.

기본자료형이 원시타입이고, 래퍼클래스는 원시타입을 객체화 한 것이다.

 

원시타입(기본자료형)은 언제나 값이 존재한다.

필드에서 초기화하면 디폴트 값으로 0에 준하는 값이 들어가며, 메소드나 클래스 내에서는 초기화 및 선언을 같이 해줘야 실행이 된다. (초기화만하면 에러 발생)

 

래퍼클래스는 값이 존재하지 않는 "NULL" 상태일 수 있다.

 

이것이 둘의 차이점이다.

 

 

 

 

 

 

▶Entity에서 원시타입과 래퍼클래스를 사용하는 기준


좋다. 이 둘이 무엇인지 어떤 차이가 있는지도 알았다!

 

위에서 말했듯이

원시타입(기본자료형)은 언제나 값이 존재한다.

필드에서 초기화하면 디폴트 값으로 0에 준하는 값이 들어가며, 메소드나 클래스 내에서는 초기화 및 선언을 같이 해줘야 실행이 된다. (초기화만하면 에러 발생)

 

즉, 언제나 값이 존재하고 절대로 Null이 발생할 수 없다.

->NullPointerException이 생기지 않음.

 

 

하지만 "없는상태" 와 "0"을 구분할 수가 없다.

예를들어, id를 원시타입으로 두었을 때, 조회 시 0이 나오면 이 값이 진짜 0인지 아니면 null을 의미하는건지 알 수가 없다.

 

"없는상태" Null이라는 응답을 확실하게 받기 위해서 래퍼타입을 사용하는 것이다.

 

 

 

 

만약 Entity를 생성했을 때, DB 테이블에 기본값으로 null이 들어가길 원한다

-> 래퍼타입으로 선언

 

그게 아닌 int처럼 0이 들어가게 하고 싶다

-> 원시타입으로 선언

 

이런것도 고려해서 DB를 설계해보면 좋을 것 같다는 생각이 들었다.

728x90
저작자표시 (새창열림)

'BackEnd > Spring Boot🍃' 카테고리의 다른 글

[Spring] DTO 클래스에 toEntity, from 메서드를 추가하는 이유, from에 static을 붙이는 이유  (0) 2024.08.21
[Spring] Identifying(식별관계)와 Non-Identifying(비식별관계)  (0) 2024.07.19
[Spring JPA] JPA Entity에서 기본 생성자를 만드는 이유, Reflection이란? proxy 객체란? @NoArgsConstructor(access = AccessLevel.PROTECTED)을 사용하는 이유  (0) 2024.04.15
[Spring] 클래스 선언부에 @Builder와 @NoArgsConstructor, @AllArgsConstructor을 같이 사용해야 하는 이유  (0) 2024.04.13
[Spring] Builder 패턴과 Lombok의 @Builder  (0) 2024.04.13
  1. ▶원시타입(Primitive type)과 래퍼클래스(Wrapper Class)란?
  2. ▶Entity에서 원시타입과 래퍼클래스를 사용하는 기준
'BackEnd/Spring Boot🍃' 카테고리의 다른 글
  • [Spring] DTO 클래스에 toEntity, from 메서드를 추가하는 이유, from에 static을 붙이는 이유
  • [Spring] Identifying(식별관계)와 Non-Identifying(비식별관계)
  • [Spring JPA] JPA Entity에서 기본 생성자를 만드는 이유, Reflection이란? proxy 객체란? @NoArgsConstructor(access = AccessLevel.PROTECTED)을 사용하는 이유
  • [Spring] 클래스 선언부에 @Builder와 @NoArgsConstructor, @AllArgsConstructor을 같이 사용해야 하는 이유
LearningStudy
LearningStudy
LearningStudy
끊임없는 탐구
LearningStudy
전체
오늘
어제
  • 분류 전체보기 (83)
    • 오류 해결 (2)
    • BackEnd (35)
      • Spring Boot🍃 (16)
      • 개념 정리 (2)
      • Git & GitHub (13)
      • 쿼리 튜닝 (4)
    • 회고록 (0)
    • AWS (0)
    • 일기📝 (7)
      • Letter To Me💌 (5)
      • 멋쟁이사자처럼 12기 (2)
    • 학과 공부 (39)
      • Java (4)
      • C & C++ (7)
      • Python (6)
      • 이산수학 (13)
      • 자료구조 (5)
      • 데이터베이스 (4)

블로그 메뉴

  • 블로그 주인 GitHub
  • 개인 블로그

인기 글

공지사항

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
LearningStudy
[Spring] Entity에서 원시타입과 래퍼클래스를 사용하는 기준
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.