PK에 Long을 사용하는 이유

HwangBaco·2023년 5월 10일
0

누군가는 primitive type인 long이 메모리를 덜 잡아먹고 성능이 더 좋아 최적화에 더 도움이 된다 하여 long을 사용하는 것이 좋다고 주장한다.

나 또한 그냥 객체지향적으로 설계해야 하니 Wrapper class를 사용한다고 두루뭉술하게 이해하고 있었다.

나와 같은 궁금증을 가진 이가 인프런에 질문을 올렸고, 백기선님이 친절하게 답변해 주셔서 이를 정리해본다.

PK엔 왜 Long을 사용해야 하나요?


백기선 님 답변:

null을 사용할 수 있기 때문에 사용하고 있습니다.

프리미티브 타입은 기본값이 0인데 그럼 실제로 id 값이 0인건지, 값이 없는건지 사실 구분하기 어렵습니다. id가 0일 수도 있는거니까요. 그런데 Wrapper 타입인 Long이나 Integer를 쓰면 id가 없는 경우엔 확실히 null이고, 그 자체로 id가 없다는걸 보장할 수 있죠.

자세한 이유는 나와있지 않긴하지만 Hibernate JPA 공식 문서에서도 Wrapper 타입을 권장하고 있네요.

We recommend that you declare consistently-named identifier attributes on persistent classes and that you use a nullable (i.e., non-primitive) type.

profile
알고리즘 풀이 아카이브

0개의 댓글