VO Backend/DDD 2024. 7. 11. [DDD] 도메인 주도 개발 시작하기(밸류 타입과 엔티티) 개요도출된 모델은 크게 엔티티와 밸류로 구분할 수 있다. 이 둘의 차이를 명확하게 아는 것은 도메인을 구현하는 데 있어 중요하다. 책을 보면서 두 모델의 관계와 특징에 대해 헷갈렸던 부분들과 이해한 결과에 대해 기록해 보려고 한다.식별자와 동등성 비교엔티티와 밸류 타입의 가장 큰 차이점은 식별자 여부와 동등성 비교 방식이다. 먼저 이 부분에 대해 어떻게 다른지 보자.엔티티먼저 엔티티는 식별자를 가진다. 식별자는 객체마다 고유하기 때문에 각 엔티티는 서로 다른 식별자를 가진다. 때문에 엔티티의 동등성 비교는 식별자를 이용해 수행된다. 밸류 타입밸류 타입은 한 개 이상의 데이터가 개념적으로 완전한 하나일 때 이용한다. 즉 여러 데이터의 조합을 하나의 값으로 보는 것이다. 때문에 밸류 타입의 동등성 비교는 내.. Backend/JPA 2024. 5. 17. [JPA] 값 타입(Embeddable, Embedded) 개요객체지향적인 어플리케이션을 설계하기 위해선 자율성을 가지는 객체들의 유기적인 협력 관계를 잘 설계해야 한다.따라서 도메인 로직을 객체지향적으로 설계하기 위해선 엔티티 객체 내부에서도 객체 분리가 이뤄져야 한다. 객체지향의 사실과 오해(1)객체지향의 사실과 오해라는 책을 읽으며 객체지향이라는 개념을 이해하는 데 큰 도움을 얻었다. 한 챕터씩 다시 읽어보며, 그 내용과 내가 알게 된 점 등을 기록하려고 한다. 협력하는 객체들choi-records.tistory.comJPA에서 제공하는 값 타입 기능을 이용하면 엔티티 객체 내부에서도 객체 분리를 할 수 있다.값 타입엔티티 객체 내부에서 새로운 값 타입을 정의해 사용할 수 있는데, JPA에선 이것을 임베디드 타입이라고 한다.Member 엔티티의 주소와 근무.. JAVA 2023. 10. 28. [JAVA] VO(Value Object), 원시값 포장 개요 VO와 원시값 포장 객체는 유사한 점이 있지만, 다른 맥락에서 생긴 개념이다. 먼저 VO는 객체를 '값'으로 보기 위해서 만들어진 개념이다. 특정 객체 또는 값에게 타입을 부여해 해당 객체가 어떤 값을 표명하는지 쉽게 알 수 있게 해 준다. 이외에도 많은 이점을 누릴 수 있다. 원시값 포장 객체는 이름 그대로 primitive 타입을 포장한 객체다. 이 개념이 나오게 된 이유는 해당 값에 대한 책임을 분리하기 위해서이다. VO(Value Object) VO는 아래 3가지 조건을 만족해야 한다. 1. 동등성 2. 불변성 3. 자기 검증 동등성 VO는 한 가지 이상의 멤버를 가질 수 있다. 그리고 이를 값으로 보기 때문에 두 객체의 값이 같다면 같은 객체로 본다. 동등성이 보장되는 것이다. [JAVA].. 이전 1 다음