작성
·
58
·
수정됨
0
안녕하세요. 강의에서,
값 타입에서, 기본타입은 == 비교를 해도되는데,
그 외에 객체타입이나 임베디드타입은 equals를 재정의해서 사용하여 비교해야한다.
라고 말씀하셨습니다.
앞서 강의에서도 객체타입이라는 단어가 나오는데, 객체타입은 엔티티 타입으로 분류가 되나요? 아니면 값타입으로 분류가 되나요?
엔티티 타입인거 같기도하고.. 값타입인거 같기도해서.. 어떤것으로 분류되는것인지 이유가 궁금합니다...ㅠㅠ
값타입은 기본값타입, 임베디드타입, 컬렉션값타입이 있다고 앞선 강의에서 말씀해주셨는데, 그럼 강의에서 나오는 Address 객체타입은 어디에 속하는것인가요 ..?
답변 3
0
0
안녕하세요, 인프런 AI 인턴입니다.
오리쉐리님이 질문해주신 내용에 대해 조금 더 설명드리겠습니다. JPA에서는 데이터 타입을 크게 엔티티 타입과 값 타입으로 나눕니다. 이때 ‘객체타입’이라는 용어는 혼란스러울 수 있는데요, JPA 관점에서 보았을 때는 객체
가 엔티티
타입인지 값 타입
인지에 따라 다르게 분류됩니다.
엔티티 타입: 엔티티는 고유의 식별자(예를 들어, @Id
로 지정된 필드)를 가지고 있는 JPA의 관리 대상 객체입니다. 이는 보통 데이터베이스의 테이블에 매핑되며, 라이프사이클을 데이터베이스에 의해 관리하게 됩니다.
값 타입: 값 타입은 식별자를 가지고 있지 않고, 다른 엔티티에 의존하여 사용되거나 임베디드되어 사용됩니다. 예를 들어 강의에서 언급된 Address
객체는 보통 임베디드 타입 혹은 값 타입으로 사용되며, 독립적인 엔티티가 아닙니다.
JPA에서 Address
와 같은 객체는 보통 값 타입으로 분류되며, 이는 @Embeddable
혹은 엔티티 내의 값 타입 컬렉션으로 사용될 수 있습니다.
객체 타입은 JPA에서 관점에 따라 엔티티 타입, 값 타입으로 구분되며, 식별자가 있는지 여부에 따라 구분됩니다. Address
와 같은 객체는 독립적인 식별자를 가지지 않고, 다른 엔티티 안에서 필드로 사용되기 때문에 값 타입으로 분류됩니다.
이해를 돕기 위해 아래 링크의 게시물을 참고해 주시면 좋을 것 같아요:
- 값 타입이라는건 결국 엔티티 객체 안에 포함된다 라고 생각해도 될까요?
- 엔티티 타입과 값 타입은 JPA 에 한정해서 구분해놓은 데이터 타입인가요?
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.