[JPA]는 새로운 엔티티를 어떻게 알아볼까?
Long id = 0L ? 코틀린을 공부하다 참고하려고 우테코 지원 플랫폼의 코드를 봤다.
그 중 흥미로운 점을 발견했는데, 엔티티를 생성할 때 를 로 초기화 하는 것이다. 이게 왜 흥미로웠냐면 상수 픽스쳐 사용 주의 포스팅에서 썼듯이 가 이 아니면 를 시행한다고 생각했기 때문이다.
굳이 로 초기화하면 비용만 추가로 들 것 같았다. 그래서 자바 스프링에서 직접 간단한 엔티티를 만들고, id를 로 지정해 저장해봤다. 실행된 SQL문을 보면, 역시나 문이 문에 선행되었다.
대신 가 수행된 것이다. JPA의 새로운 엔티티 식별법 상속 시 쓰게 되는 구현체인 의 를 다시 살펴보자. 참 명료한 언어로 잘 짜여있다.
니까 엔티티가 새로운 엔티티라면 를, 아니라면 를 수행한다.
그렇다면 이 는 어디서 가져오는 걸까? 를 구현한 몇 개의 클래스에 디버깅을 걸며 찾아보니 라는 낯선 이름의 클래스에 걸렸다. 코드 상 를 판단하는 조건은 다음과 같다. 엔티티의 가 원시 타입이 아니라면 일 때 …