인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

비둘기님의 프로필 이미지

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

31강. 대출 기능 개발하기

UserLoanHistory Entity

작성

·

40

0

id를 할 때는 Entity에서 자료형 Long을 쓰고, user_id는 자료형 long을 쓰는데 왜 두 개 다른것을 쓰나요? 특별한 이유가 있을까요??

답변 2

0

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요 비둘기님! 🙂 좋은 질문 감사합니다! 👍

Entity에 선언되는 id는 아직 DB에 저장하지 않았을 때 (즉, XXXRepository.save() 를 한 번도 호출하지 않았을 때) null이 들어갈 수 있으니 Long 으로 선언하였고요

userId 같은 필드는 특정 데이터가 생성될 때 반드시 존재해야 함으로 null이 들어가지 못하는 long 으로 선언했습니다.

public과 private, nullable과 non-nullable 처럼 프로그래밍을 할 때 open 해주는 범위를 최대한 닫아놓으면, 추후 유지보수성이 올라가기 때문에 위와 같은 선택을 했다고 봐주시면 될 것 같습니다.

감사합니다! 🙇

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

비둘기님께서 질문하신 엔티티에서 id 에는 Long 자료형을 사용하고, user_id에는 long 자료형을 사용하는 이유에 대해 설명드리겠습니다.

Longlong은 자바에서 자료형의 차이입니다.
- Long은 원시 자료형(long)인 long의 래퍼 클래스입니다. 이는 여러 유틸리티 메서드들을 제공하며, null 값을 가질 수 있습니다. 따라서 Long 타입은 널 값을 허용해야 할 때 주로 사용됩니다.
- 반면, long은 기본 원시 타입으로서 공간 효율성이 좋고 기본적으로 0의 초기값을 가집니다. 널 값을 저장할 수 없으므로 반드시 초기값이 필요합니다.

주로 데이터베이스와 상호작용할 때, 즉 엔티티의 식별자 필드는 보통 Long 타입을 준수합니다. 이는 JPA와 Hibernate에서 널 값을 처리할 수 있게 하여 다양한 데이터베이스 운용 시 유연성을 제공하기 위함입니다. 반면, 비즈니스 로직 내에서 Null을 용납하지 않는 경우, long을 사용하는 것이 더 적합할 수 있습니다.

이와 관련된 더 자세한 설명은 이전에 다룬 내용에서 확인할 수 있습니다. 비슷한 상황이 설명된 질문 및 답변 링크를 공유드리니 참고해 보시기 바랍니다:

위의 링크를 통해 질문하시고자 했던 내용의 맥락을 보다 명확하게 이해하시기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.