인프런 커뮤니티 질문&답변

윤홍찬님의 프로필 이미지

작성한 질문수

스프링 기반 REST API 개발

깨진 테스트 살펴보기

Long 타입에 대한 질문입니다.

작성

·

4.4K

0

강의에서 엔티티 클래스를 정의할 때,

Long 타입을 id로 사용하는 이유가 궁금합니다.

primitive 타입인 long 타입도 있는데, Long타입과의 차이점? 사용시의 차이점..?을 알고 싶습니다.

항상 친절한 답변 감사드립니다 (_ _)

답변 2

9

백기선님의 프로필 이미지
백기선
지식공유자

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

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

5

백기선님의 프로필 이미지
백기선
지식공유자

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#entity-pojo-identifier

자세한 이유는 나와있지 않긴하지만 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.