[TIL] Entity 설계 시 ID값은 왜 Long일까?
토이 프로젝트를 하다가, JPA Entity 설계 시 ID값은 왜 Long으로 했나요??
라는 질문에 나는 답을 할 수 없었다….
왜냐하면 JPA Entity 설계시 관련 강의나 책에서 Long으로 지정하고 있어서
나는 그냥 따라서 기계적으로 만들었던거였다. ( 그땐 왜 안궁금했지? )
왜? Entity 설계시 ID 값을 Long으로 지정하는지?
이유를 찾아봤다.
int, long이 아닌 Wrapper Class(Long)를 쓰는 이유
int, long이 아닌 Wrapper Class(Long)를 쓰는 이유는 null을 사용할 수 있기 떄문이다.
primitive type(기본형 타입)은 기본값이 0이 되는데,
id가 없을 때를 나타낼 수 없다.
Long과 Integer 중에서 Long을 쓰는 이유는 표현범위 때문이다.
Long이 Integer보다 월등히 많은 수를 표현할 수 있기 때문에 Long을 사용한다.
Integer의 범위로도 충분하다면 Integer를 사용해도 무방하다.
최종 정리
1) int가 아닌 이유
long이 더 많은 값을 저장할 수 있다.
2) long 대신 Long 쓰는 이유
long은 primitive type으로, 값이 없을 경우 0으로 초기화된다.
따라서, id가 없어서 0으로 세팅이 된 것인지, 아니면 실제 값이 0인지 데이터만 보고 판별할 수 없다.
반면 Long은 wrapper type으로, 값이 없을 경우 null로 초기화
된다.
따라서 값이 0이라면, id가 0으로 저장됐음을 알 수 았다.