분류 전체보기
-
part 3. 애그리거트책 정리/도메인 주도 개발 시작하기 2023. 7. 23. 11:01
애그리거트 애그리거트 애그리거트란? 변경의 단위다. 데이터를 변경하는 단위로 다뤄지는 객체의 모임을 애그리게이트라고한다. 데이터변경의 단위가 되므로 트랜잭션이나 로크와도 밀접한관계를 갖는다. 저자의 경험 다수의 애그리거트가 한개의 엔티티 객체만 갖는 경우가 많았으며, 두 개이상의 엔티티로 구성되는 애그리거트는 드믈었다. 애그리거트 루트 애그리거트 루트의 역할 애그리거트가 제공해야 할 도메인 기능을 구현 업무규칙을 무시하고 직접 DB테이블의 데이터를 수정하는 것과 같은 결과를 만든다 ← 얼마나 자주 발생하는가? 주의사항 애그리거트는 독립적이어야함 한 트랜잭션에서는 한 개의 애그리거트만 수정해야 한다. 외부에서 내부 밸류타입을 꺼내서 사용하지 못하도록 주의 해야한다. 리포지터리와 애그리거트 NoSQL 에서는..
-
part 2. 아키텍처 개요책 정리/도메인 주도 개발 시작하기 2023. 7. 16. 00:53
아키텍처 개요 네 개의 영역 표현 영역 : HTTP 요청을 응용영역이 필요로 하는 형식으로 변환해서 응용 영역에 전달하고 응용영역 응답을 HTTP응답으로 변환하여 전송 응용영역 : 로직을 직접 수행하기 보다는 도메인 모델에 로직 수행을 위임한다. 도메인영역 : 도메인 모델을 구현. 주문도메인은 ‘배송지 변경’, ‘결제 완료’, ‘주문 총액 계산’과 같은 핵심 로직을 도메인에서 구현 인프라스트럭처 : 논리적인 개념을 표현하기보다는 실제 구현을 다룸 계층구조 아키텍처 의존관계에 주의하라 테스트의 어려움 기능 확장의 어려움 DIP 도메인 영역의 주요 구성요소 도메인 모델의 인티티는 단순히 데이터를 담고 있는 데이터 구조라기보다는 데이터와 함께 기능을 제공하는 객체이다. 도메인 관점에서 기능을 구현하고 기능 구..
-
part 1. 도메인 모델 시작하기책 정리/도메인 주도 개발 시작하기 2023. 7. 8. 00:44
도메인 모델 시작하기 도메인이란 비즈니스 도메인 [온라인 서점] 하위도메인 [주문] 하위도메인 [회원] 하위도메인 [혜택] 하위도메인 [배송] 하위도메인 [결제] 하위도메인 [정산] 하위도메인 [카탈로그] 하위도메인 [리뷰] 회사에 적용한다면? 도메인 전문가와 개발자 간 지식 공유 개발에 앞서서 각 하위도메인들이 어떤 역할을 하게 되는지 파악할 수 있음 도메인 모델 어떻게 하면 개념 모델을 잘 작성할 수 있는가? 예시에서는 상태 다이어그램을 이용한 주문 산태 모델링을 통해 의미를 전달한다. uml을 이용해 개념모델 표현하여 도메인 자체를 이해할수있도록 작업한다. [추가] uml은 어떨때 사용해야하는가? (UML 실전에서는 이것만 쓴다.) 언제 다이어그램을 그려야 하며, 어떻게 그려야 하는가 언제 다이어그..
-
[단축키 요약] IntelliJ 단축키 요약하기카테고리 없음 2022. 6. 26. 14:46
뭔가 귀찮을때 Win : Ctrl + Shift + Enter 생성 목록 단축키 (디렉터리 패키지 클래스등) getter, setter 만들때 잘 사용됨 Mac : Cmd + n Win : Alt + insert 리턴값 자동 완성 Mac : Cmd + Option + v Win : Alt + Enter 리팩토링 함수 추출 Mac : Cmd + Option + m Win : Ctrl + Alt + m 테스트 테스트 생성하기 Mac : Cmd + Shift + t Win : Ctrl + Shift + t
-
[일반 스터디]java spring 1일차카테고리 없음 2022. 6. 21. 01:25
AOP class A { method a(){ println("안녕하세요") println("안녕히 가세요 ") } } 바이트 코드를 조작하여 작업하는 방법 proxy pattern 을 이용하는 방법 @transactional(readOnly = true) readOnly transactional을 이용하기 위해서 사용됨. Annotaion 만들기 주석같은 친구임. 직접 만들어주어야함. AOP 적용 예제 여기서 해당 로직이 걸리는 시간을 측정할 수 있다. @LogExecutionTime 생성하기 @Component // bean 으로 등록함 @Aspect public class LogAspect{ Logger logger = LoggerFactory.getLogger(LogAspect.class); @A..
-
[type-challenges] 11_Tuple to Object프로그래밍 언어/TypeScript 문제풀이 2022. 5. 23. 00:29
Q: source : https://github.com/type-challenges/type-challenges/blob/main/questions/00011-easy-tuple-to-object/README.md GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge github.com Give..
-
[type-challenges] 7_Readonly프로그래밍 언어/TypeScript 문제풀이 2022. 5. 22. 21:36
Q : source : interface Todo { title: string description: string } const todo: MyReadonly = { title: "Hey", description: "foobar" } todo.title = "Hello" // Error: cannot reassign a readonly property todo.description = "barFoo" // Error: cannot reassign a readonly property A : property in keyof T T로 들어온 요소를 꺼내서 사용할때 사용 아래처럼도 사용이 가능합니다. type Props = { [P in keyof T]? : T[P] } 결과값 = Partial 과 동일한 기능..
-
[type-challenges] 4_pick프로그래밍 언어/TypeScript 문제풀이 2022. 5. 22. 15:45
Q: source : https://github.com/type-challenges/type-challenges/blob/main/questions/00004-easy-pick/README.md interface Todo { title: string description: string completed: boolean } type TodoPreview = MyPick const todo: TodoPreview = { title: 'Clean room', completed: false, } A: 인데스 타입 (index types) 동적 프로퍼티 이름을 사용하는 코드를 컴파일러가 검사할 수 있음. 이렇게 사용하는 경우는 K 를 T key값으로 이용가능하도록 사용하는 문법이다. T에 들어온 값의 key를 뒤..