[spring] long vs Long

dev.sy·2024년 9월 19일

spring

목록 보기
4/4

프로젝트를 시작하면서 엔티티 객체의 id값이 int보다는 long 타입을 사용하는 것이 더 적합하다는 것은 알고 있었지만, 순간 long 타입과 Long 타입이 헷갈리기 시작했다

먼저 id값에 int보다는 long을 더 선호하는 이유는
1. 범위 자체가 더 넓기 때문에 db에 저장되는 레코드 양이 많아질 수록 더욱 안전
2. 서비스가 성장하면서 데이터 양이 많아지면 추후 발생할 수 있는 id 충돌 문제 예방 가능
-> 즉, 데이터베이스 규모 + 추후 확장성까지 고려해 사용하게 되는 것

본론으로 돌아와서 long형과 Long형의 차이점을 알아보자

long

  • 원시 타입(primitive type) : 메모리에서 직접 값 저장하는 자바의 기본 데이터 타입
  • 기본타입이기 때문에 null값 가질 수 없음
  • 직접 값을 할당하기 때문에 참조 타입에 비해 성능 좋음

Long

  • 참조 타입(wrapper class) : 메모리 주소값으로 객체를 참조하기 때문에 null값 가질 수 있음
  • db상 id 설정되지 않았을 경우 유용
  • 기본 타입-객체 타입 간 자동 변환(박싱&언박싱) 지원
  • 상대적으로 속도 느림

➡ 그렇다면 엔티티 객체 ID에는 어떤 타입이 적합할까?

기본적으로 Long 사용하는 것이 일반적

  • 유연성 : id가 null일 수 있는 경우
  • ORM 프레임워크 호환성 : JPA나 Hibernate 같은 ORM에서는 관행상 Long으로 선언

그러나!!
해당 객체가 not null 보장이 된다면 long 사용하는 것이 더 좋음

profile
Hello, World!

0개의 댓글