본문 바로가기

엔티티5

DDD - Entity - 출처: 도메인 주도 설계 - 에릭 에반스 - 개요 객체는 본질적으로 속성이 아닌 연속성과 식별성으로 정의 된다. 속성은 객체의 생명주기 동안 계속해서 변해간다. 어릴 때의 나와 현재의 나를 비교해보면 키, 친구들 많은 것이 변했으며 심지어는 이름이 변하는 경우도 있다. 하지만 식별성은 지속되는데 어릴 때의 '나'와 지금의 '나'는 동일하다. Entity는 생명주기 동안 형태와 내용은 급격하게 변하지만 연속성은 유지해야 한다. 그리고 이런 Entity를 추적하려면 식별성이 정의되어 있어야 한다. 우리가 좌석 예약 시스템을 만든다고 가정해보자. 만약 좌석을 예약하고 발급받은 입장권에 좌석번호가 명시된 경우 좌석번호를 Entity의 식별성으로 사용해야 한다. 반면 어떤 경우에는 단순히 일반석이라고 등급만 .. 2022. 7. 17.
객체지향의 사실과 오해 - 객체란 무엇인가 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - 엘리스와 객체지향의 공통점 저자는 객체지향을 설명하기 위해 이상한 나라의 앨리스 이야기를 예시로 들고 있다. 사실 나는 이상한 나라의 앨리스를 읽어보진 않았지만 그래도 이해하는데 전혀 무리가 없도록 자세히 설명해주고 있다. 엘리스는 아름다운 정원으로 들어가기 위해 많은 노력을 한다. 그 과정에서 음식을 먹거나 부채질을 하면 키가 변하는 이상현상을 겪게 된다. 그리고 이를 이용해 키를 변화시키면서 목표했던 아름다운 정원에 들어가게 된다. 엘리스의 키나 현재위치는 상태라고 볼 수 있다. 엘리스의 상태가 변하는것은 케이크를 먹거나 부채질을 하는 등의 행동을 했기 때문이다. 또한 현재 상태에 따.. 2021. 8. 9.
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 프로그래밍 - 실전 예제 책에서는 쇼핑몰을 만든다고 가정하고 몇 가지 요구사항을 통해 엔티티 맵핑을 적용해보는 과정이 있다. 내용을 다 기술할수는 없고 몇 가지 생각해볼 내용들이 있다. 회원은 상품을 주문할 수 있다. 주문시 여러 종류의 상품을 선택할 수 있다. - 도메인 모델 분석 JPA 는 도메인 모델을 다루는데에 있어서 Mybatis 보다 상당한 강점이 있다고 생각한다. Spring Data JPA 문서에서도 domain 이라는 단어자체가 상당히 많이 등장하며, Specifications 부분은 직접적으로 에릭 에반스의 DDD 에서 개념을 가져왔다고 말하고 있다. 위에서 언급한 요구사항 2 가지를 적용해보자. 위 그림은 회원, 주문, 제품간의 관계를 나타낸것이다... 2021. 6. 27.
아키텍처 - 클린 아키텍처 - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - 개요 지난 수십년간 많은 시스템 아키텍처가 있었다. 이런 아키텍처들은 공통된 목표가 있는데 바로 관심사의 분리이다. 이들은 모두 소프트웨어를 계층으로 분리하였다. 업무규칙에 대한 계층과, 사용자 및 인터페이스를 위한 계층등이 있다. 또한 업무규칙이 아닌 다른 요소와의 독립성도 강조한다. 프레임워크 독립성: 아키텍처는 프레임워크의 존재 여부에 의존하지 않는다. 테스트 용이성: 업무규칙은 외부요소없이도 테스트가 가능해야 한다. UI 독립성: 업무규칙을 변경하지 않고도, UI를 쉽게 변경할 수 있어야 한다. 데이터베이스 독립성: 업무규칙에 영향을 주지 않고, 데이터베이스를 변.. 2021. 2. 10.