JPA와 관련하여 공부하다 보니 Entity class에 wrapper class를 사용한 것을 볼 수 있었다. 이전에는 항상 primitive class를 사용했기에 어색하게 느껴져서 조사해 보았다.
@Entity
public class Employee {
@Id
private Long empNo;
private String name;
private Integer age;
private Character gender;
}
Hibenate 공식 문서를 살펴보면 Id에 non-primitivive type을 사용하는 것을 권장한다.
Primitive type의 경우 null값을 가질 수 없으며 기본 값이 0이다. 반면, Hibernate에서는 데이터가 존재하지 않을 때 null로 표현한다.
즉, 데이터가 없을 때 primitive type은 0으로, hibernate는 null로 표현한다는 것이다.
Wrapper type은 primitive type 객체를 다루기 위해 사용하는 클래스로 null이 될 수 있다. 따라서 Hibernate의 데이터 존재 여부를 제대로 파악하기 위해서 Id는 Wrapper class를 사용하는 것이 바람직하다.
Id가 아닌 값들에 대해선 어떻게 하는 것이 좋을까? 공식 문서에서 정확한 사용 방법에 대해서 알 수는 없었다.
내 생각에는 모든 속성에 Wrapper class를 사용하는 것이 작성하는 것이 코드 작성의 편리함과 가독성 측면에서 더 좋을 것 같다.
<참고자료>
좋은 글이네요. 공유해주셔서 감사합니다.