250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

엔티티(Entity)와 DTO에 long선언을 Long 으로 변경했을때 nullPointException 에러 발생 본문

[Snow-ball]프로그래밍(컴퓨터)/프로그래밍 실수

엔티티(Entity)와 DTO에 long선언을 Long 으로 변경했을때 nullPointException 에러 발생

Snow-ball 2021. 6. 5. 10:10
반응형

문제발생 :

 

Entity와 DTO 부분에서 private long artistId; 라고 선언했었는데, Long으로 사용하기를 권장하는걸 알게되었다.

 

근거는 Long을 사용하면은 null을 사용할 수 있기떄문이다. 

 

long을 사용하면 프리미티브 타입은 기본값이 0이기때문에 실제로 id값이 0인건지, 값이 없는건지 구분하기가 매우 어렵다고 한다. 사실 거의 알아내기 불가능아닐까..? 

 

그런데 Wrapper 타입인 Long 이나 Integer를 쓰면 id가 없는 경우엔 확실하게 null이고, 그 자체로 id가 없다는걸 보장할 수 있게 된다.

 

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.

 

공식문서 링크 : https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#entity-pojo-identifier

 

Hibernate ORM 5.3.20.Final User Guide

Fetching, essentially, is the process of grabbing data from the database and making it available to the application. Tuning how an application does fetching is one of the biggest factors in determining how an application will perform. Fetching too much dat

docs.jboss.org

 

 

 

해결 방법 : 

나의 경우에는 밑에처럼 nullable = false 를 추가해줬더니 해결이 됬다.

 

1
2
@Column(name = "artist_id", unique = true, nullable = false)
private Long artistId;
cs

 

반응형
Comments