김영한님의 강의를 보면 항상 @Id값에 @GeneratedValue를 해 auto_increment를 할 경우
Long타입을 쓰시는 모습을 볼 수 있었다.
int가 아니라 long을 쓰는 이유는 더 많은 값을 카운트할 수 있어 확장성 때문인 것은 알겠다.
하지만 왜 long이 아니라 Long을 사용하시는걸까?
궁금해서 구글링을 해보니
long은 primitive type이라 값이 없을 경우 0으로 초기화되지만
Long은 wrapper type이라 값이 없을 경우 null로 초기화되기 때문이라는 것을 알 수 있었다.
즉, long으로 둘 경우 기본 초기화값에도 어쨌든 0이라는 값이 존재하기 때문에 이 값이 초기화가 되지 않아 0인건지
아니면 업데이트된 값이 0인지 바로 알기 어렵다는 치명적인 단점이 생기는 것이다.
반면, Long으로 둘 경우 초기화되지 않은 id는 null값을 가져 초기화됐는지 아닌지를 바로 판단할 수 있다.
결국 안전성의 차이로 인해 Long타입을 쓰는 것이었다.
'Spring > 프로젝트' 카테고리의 다른 글
[Spring Security] Refresh Token 적용기 (0) | 2023.07.18 |
---|---|
@RestContollerAdvice 로 Security 예외 처리하기 (0) | 2023.07.05 |
ERD 설계 과정 (0) | 2023.06.20 |