JPA 공부 중 많은 코드들이 Entity 설계 시 ID 값을 Long 타입으로 지정해주는 것을 보았다.
NULL값을 처리해주기 위해 원시 타입인 int, long 대신 wrapper 클래스를 사용하는것은 알고 있었지만
Integer 을 써도 될것같은데 굳이 Long을 쓰는 이유를 알아보았다.
Long과 Integer의 주요 차이점
- 값의 범위
- Integer: -2,147,483,648 ~ 2,147,483,647 (약 21억)
- Long: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (약 922경)
- ID 값으로 Long을 선호하는 이유:
- 확장성: 데이터가 증가해도 ID 값이 부족할 걸정이 없음
- 안정성: Integer 최대값 도달 시 오버플로우 발생 가능
- 일관성: 다른 시스템과의 통합 시 ID 값 호환성 보장
예를 들어:
// Integer 사용 시 문제
@Id private Integer id; // 약 21억개 제한
// Long 사용 시
@Id private Long id; // 약 922경개 가능
실제 사례:
- SNS 서비스: 트위터의 경우 초기에 Integer를 사용하다가 ID 부족으로 Long으로 마이그레이션
- 대규모 커머스: 주문번호, 상품번호 등에서 Long 사용
- 로그 시스템: 대량의 로그 데이터 ID 관리
메모리 차이:
- Integer: 4 bytes
- Long: 8 bytes
하지만 현대 시스템에서 이 정도의 메모리 차이는 크게 중요하지 않으며, 확장성이 더 중요한 요소라고 한다.
또한 현직에 계신 개발자분께 여쭤봤을때는 Integer로 처리하기 충분한 엔티티도 서비스가 커질꺼라는 기대? 그리고 관행 때문에 Long으로 많이 하신다고 하셨다.
결론: 특별한 제약이 없다면 ID 값은 Long을 사용하는 것이 안전하고 확장성 있는 선택이다. 하지만 작은 서비스는 Integer를 써도 무방하다.
'개발 > SpringBoot' 카테고리의 다른 글
N+1 문제 해결을 통한 와인 목록 조회 성능 개선 (0) | 2025.04.07 |
---|---|
AOP와 Redis 캐싱을 활용한 OpenAI API 호출 성능 측정 및 최적화 사례 (0) | 2025.04.03 |
깃허브로 그룹 프로젝트 하는 법 3: 브랜치와 이슈 만들기 (0) | 2024.11.14 |
깃허브로 그룹 프로젝트 하는 법 2 : 프로젝트 환경 세팅 (0) | 2024.11.12 |
깃허브로 그룹 프로젝트 하는 법 1 : 리파지토리 생성 및 팀원 초대 (0) | 2024.11.11 |