[Spring Boot] JPA - Entity 설계에서 Long과 long의 차이

김준영·2023년 11월 15일

Spring Boot

목록 보기
2/5
post-thumbnail

Spring boot JPA를 활용한 단위 테스트 중 무의식 중에 assertNull을 사용했는데

내가 왜 이걸 사용했지? 그리고 왜 id를 long이 아닌 Long이지?
라는 의문이 들었다.

    @Entity
    @NoArgsConstructor(access = AccessLevel.PROTECTED)
    public class Perfume {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "PERFUME_ID")
        private Long id;
    }
	@Test
    public void ID_자동생성_확인() throws Exception{
        //given
        String name = "향수이름";

        //when
        Perfume perfume = new Perfume(name);

        //then
        assertNull("id는 자동 생성됩니다.", perfume.getId());
    }

Long과 long의 차이

long은 원시 타입(primitive type), Long은 래퍼 클래스(Wrapper class) 이다.

id를 long으로 사용하는 경우, 별도의 초기화 과정이 없다면 0으로 초기화 된다.
반면, Long으로 사용하는 경우엔 초기값은 Null이다.


즉, id타입으로 Long을 사용하는 경우 Null이라면, id가 없다는 것을 보장할 수 있다

그래서 test case에서 assertNull을 사용했다!

참조

인프런 질문 - Long 타입에 대한 질문입니다.

0개의 댓글