환경 구성이랑 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 캐스팅 과정이 추가되어 성능이 조금 저하된다고 한다.
'note' 카테고리의 다른 글
물개의 노트 (1) docker 설치하고 postgreSQL 서버 구축하기 (0) | 2025.03.06 |
---|---|
물경력 히키코모리 개발자의 노트 (0) 사이드 프로젝트를 시작하다 (0) | 2025.03.06 |
[링크스크랩] 동적타이핑 (Dynamic typing), 정적타이핑 (Static typing) (0) | 2023.05.14 |
[링크스크랩] 컴파일러(compiler)와 인터프리터(interpreter) (0) | 2023.05.14 |
[링크스크랩] Spring Framework 기본 개념 (0) | 2023.01.31 |