Replies: 2 comments
-
|
동일성이란? 동등성이란?
VO(값 객체)는 보통 모든 필드의 값이 같으면 같은 객체로 취급합니다. -> 동등하다면 같은 객체로 취급 하지만 엔티티는 식별자가 같으면 보통 같은 객체로 취급합니다. -> 동일하다면 같은 객체로 취급 |
Beta Was this translation helpful? Give feedback.
-
|
객체의 관점에서 동일성은 ==로 비교하는 것으로, 두 변수가 실제로 같은 객체를 참조하고 있는지, 즉 객체의 경우 주소값 자체가 같은지를 의미합니다. 반면 동등성은
여기서 도메인 관점에서는 VO와 엔티티를 구분해서 생각하는 것 같습니다. VO는 값 자체가 의미를 가지기 때문에 모든 필드가 같다면 동등하다고 보는 것이 자연스럽습니다. 예를 들어 Money(1000원), Email 같은 객체는 값이 같으면 같은 객체로 취급해도 문제가 없습니다. 즉, 동등성을 기준으로 같음을 처리합니다. 반대로 엔티티는 식별자가 객체의 동일성을 판단하는 기준입니다. 이름이나 나이 같은 값이 변경되더라도 같은 id를 가진다면 같은 엔티티라고 판단합니다. 그래서 엔티티의 다만 JPA에서는 조금 더 주의해야 한다고 생각합니다. 영속화되기 전에는 id가 없고, 프록시 객체도 존재하기 때문에 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
equals(), hashCode()를 이용한 동등성과 동일성을
도메인과 엔티티의 관점에서 설명을 해주세요.
Beta Was this translation helpful? Give feedback.
All reactions