[JPA] Entity class의 타입: Wrapper vs. Primitive

🙈·2023년 7월 22일
0

[Dev] JAVA

목록 보기
2/2

🤔 개요

JPA와 관련하여 공부하다 보니 Entity class에 wrapper class를 사용한 것을 볼 수 있었다. 이전에는 항상 primitive class를 사용했기에 어색하게 느껴져서 조사해 보았다.

@Entity
public class Employee {
    @Id
    private Long empNo;
    private String name;
    private Integer age;
    private Character gender;
}

💡 Wrapper type과 Primitive type

Id

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를 사용하는 것이 바람직하다.

그 외의 attibutes

Id가 아닌 값들에 대해선 어떻게 하는 것이 좋을까? 공식 문서에서 정확한 사용 방법에 대해서 알 수는 없었다.

내 생각에는 모든 속성에 Wrapper class를 사용하는 것이 작성하는 것이 코드 작성의 편리함과 가독성 측면에서 더 좋을 것 같다.




<참고자료>

profile
개발 일기🌱

1개의 댓글

comment-user-thumbnail
2023년 7월 22일

좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기