본문 바로가기
note

Entity의 ID로 Long 타입을 쓰자

by 물 개 2025. 3. 14.

 

환경 구성이랑 DB, Entity 설계부터 차근차근 올리려고 했는데 도저히 그거까지 정리할 시간이 안 나서

그냥 사이드 프로젝트하면서 배운 거, 생각한 거, 그냥 습관적으로 했는데 확실히 알게 된 것을

바로바로 적으려고 한다.

 

첫번째는 "Entity의 ID로 Long 타입을 쓰자" 이다.

 

나는 여태까지 실무에서 Entity의 ID로 Long, long, Integer는 커녕 String을 썼었다.

학원에서도 그렇게 했었고, 입사 후 기존 시스템들도 그렇게 되어있었으니까...

그리고 스프링부트로 신규개발을 많이 해보셨다는 분이 경력직으로 입사하시고

같이 신규개발을 하게됐는데 그 분도 String 타입으로 ID를 저장하길래

Long을 써야된다는 것을 정말 1도 몰랐음.

 

그런데 새로 공부하며 프로젝트를 하면서 보니 다들 Long을 쓰시는 것이었다💦

그래서 검색을 해보았다. 왜 Long으로 써야하는 것인가

이 글에 아주 잘 나와있었다...!

 

 

[JAVA] 엔티티를 작성할 때 long이 아닌 Long으로 작성하는 이유?

회사에서 프로젝트를 시작하면서 엔티티를 구성할 때, Long타입과 long타입 중 어떤것을 id로 가지고 갈 것인지 논의가 있었다.처음 내 생각은 어차피 DB에 저장될 때 auto increament를 설정한다면 애

velog.io

 

요약하자면,

  • 값 자체를 저장하는 프리미티브(원시) 타입은 null을 가질 수 없다.
  • 기본값이 0으로 지정되어 버리기 때문에 id의 값이 정말 0인지, 빈 값인지 알 수 없다.
  • 또 ID값을 DB에서 자동 증가시킬 때, 기본값이 들어가있으면 문제가 생길 수 있다.
  • null 값을 가질 수 있는 레퍼런스 타입의 래퍼 클래스를 사용해서, 값이 아직 비어있다는 것을 명확하게 해주자!

 

그런데 여기서 Long이 최선인 건 알겠는데 String도 가능은 하지 않나? 라는 생각이 들었다.

굳이 String을 꼭 쓰고 싶어서라기보다는 그냥 궁금증이 생겨서 또 검색을 해봤는데

나처럼 쓰잘데기 없는 궁금증을 가진 사람은 없는 거 같았다...ㅋㅋㅋㅋ

그래서 GPT에게 물어봤더니 String -> BIGINT 캐스팅 과정이 추가되어 성능이 조금 저하된다고 한다.

 

최근댓글

최근글

skin by © 2024 ttuttak