본문 바로가기

Entity3

DDD - Entity - 출처: 도메인 주도 설계 - 에릭 에반스 - 개요 객체는 본질적으로 속성이 아닌 연속성과 식별성으로 정의 된다. 속성은 객체의 생명주기 동안 계속해서 변해간다. 어릴 때의 나와 현재의 나를 비교해보면 키, 친구들 많은 것이 변했으며 심지어는 이름이 변하는 경우도 있다. 하지만 식별성은 지속되는데 어릴 때의 '나'와 지금의 '나'는 동일하다. Entity는 생명주기 동안 형태와 내용은 급격하게 변하지만 연속성은 유지해야 한다. 그리고 이런 Entity를 추적하려면 식별성이 정의되어 있어야 한다. 우리가 좌석 예약 시스템을 만든다고 가정해보자. 만약 좌석을 예약하고 발급받은 입장권에 좌석번호가 명시된 경우 좌석번호를 Entity의 식별성으로 사용해야 한다. 반면 어떤 경우에는 단순히 일반석이라고 등급만 .. 2022. 7. 17.
DDD - S/W와 모델 - 출처: 도메인 주도 설계 - 에릭 에반스 - S/W 에서 표현되는 모델 S/W 에서는 모델을 표현하는 주요 패턴으로 3가지 형태가 주로 사용된다. Entity: 어떤 객체가 영속성과 식별성을 지닐 때 VO: 다른 무언가의 상태를 기술하는 속성에 불과할 때 Service: 객체보다 행동/연산으로 더 명확하게 표현되는 경우 자바라면 class, Golang 이라면 struct로 표현하기만 하면 되는데 왜 굳이 Entity와 VO라는 개념을 도입해서 나누는지 의문을 가질 수도 있다. 굳이 이렇게 하는 이유는 특정 객체가 특정 패턴을 따르면 객체의 역할이 더욱 명확해져서 설계 결정을 하는데 도움이 되기 때문이다. Entity와 VO만 있으면 객체를 표현할 수 있는데 Service라는 개념은 왜 필요할까? .. 2022. 7. 16.
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.