본문 바로가기

vo4

DDD - Value Object - 출처: 도메인 주도 설계 - 에릭 에반스 - Value-Object (VO) VO는 개념적인 식별성이 없고 사물의 어떤 특징을 묘사하는 객체이다. 예를 들어 어떤 아이가 펜으로 그림을 그리려고 하고 있다고 가정해보자. 만약 똑같은 색과 굵기와 모양의 펜이 2개가 있다면 아이는 어떤 펜을 사용해도 도 크게 개의치 않을것이다. VO는 설계요소가 어느것인지가 아닌 무엇인지에 관심이 있다고 할 수 있다. - "주소"는 VO인가? VO와 Entity에 관련된 글이나 자료를 보다 보면 자주 떠오르는 유형의 의문점이 있다. VO와 Entity의 차이 혹은 "주소"는 VO일까? 와 같은 유형의 질문이다. 이 질문에 해답역시 앞의 Entity 장에서 살펴본것과 같이 도메인에서 해결하고자 하는 문제에 따라 다르다. 전.. 2022. 7. 19.
DDD - S/W와 모델 - 출처: 도메인 주도 설계 - 에릭 에반스 - S/W 에서 표현되는 모델 S/W 에서는 모델을 표현하는 주요 패턴으로 3가지 형태가 주로 사용된다. Entity: 어떤 객체가 영속성과 식별성을 지닐 때 VO: 다른 무언가의 상태를 기술하는 속성에 불과할 때 Service: 객체보다 행동/연산으로 더 명확하게 표현되는 경우 자바라면 class, Golang 이라면 struct로 표현하기만 하면 되는데 왜 굳이 Entity와 VO라는 개념을 도입해서 나누는지 의문을 가질 수도 있다. 굳이 이렇게 하는 이유는 특정 객체가 특정 패턴을 따르면 객체의 역할이 더욱 명확해져서 설계 결정을 하는데 도움이 되기 때문이다. Entity와 VO만 있으면 객체를 표현할 수 있는데 Service라는 개념은 왜 필요할까? .. 2022. 7. 16.
JPA - 객체지향 쿼리 언어 - JPQL 기본 - 참조: 자바 ORM 표준 JPA 프로그래밍 - JPQL 개요 에서 엔티티를 조회하는 많은 방법들을 간단하게 살펴보았지만 어쨌든 출발점은 JPQL 이다. 이번 절에서는 JPQL 의 기본 사용법을 알아보자. 우선 JPQL 의 기본사항 부터 확인하고 넘어가도록 하자. JPQL 은 SQL 이 아니라 객체 지향 쿼리 언어이다. 테이블을 대상으로 조회하는것이 아니다. JPQL 은 특정 데이터베이스에 의존하지 않는다. JPQL 은 결국 SQL 로 변환된다. - 기본 문법 JPQL 도 SQL 과 비슷하게 SELECT, UPDATE, DELETE 를 사용할 수 있다. 엔티티 저장시에는 persist() 를 이용하므로 INSERT 문은 존재하지 않는다. SELECT 문은 이미 살펴본적이 있다. String jpql =.. 2021. 7. 29.
JPA - 값 타입 - 값 타입 컬렉션 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 값 타입 컬렉션 회원에서 좋아하는 음식들과 주소 내역들을 참조하고 있다고 하면 이런 값 타입을 2 개 이상 저장하기 위해서는 컬렉션에 보관해야 한다. JPA 에서는 값 타입 컬렉션을 맵핑할 수 있는 @ElementCollection 과 @CollectionTable 어노테이션을 제공한다. @Entity public class Member { @Id @Column(name = "USER_ID") private String id; @ElementCollection @CollectionTable(name = "FAVORITE_FOODS", joinColumns = @JoinColumn(name = "USER_ID")) @Column(name = "FOOD_NA.. 2021. 7. 25.