| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- kusitms
- 도메인 주도 개발 시작하기
- 백엔드
- 객체지향 쿼리 언어
- Spring
- RESTClient
- springboot
- 한국대학생it경영학회
- 자바 ORM 표준 JPA 프로그래밍
- JPQL
- 최범균
- 모이삼
- 모임 장소 추천
- cicd
- 중간 지점 추천
- K3S
- 불변객체
- redis
- ddd
- 이펙티브자바
- 쿠버네티스
- 큐시즘
- Spring Batch
- java
- 중간 장소 추천
- Container Registry
- Domain Driven Design
- GitHub Actions
- JPA
- 약속 장소 추천
- Today
- Total
목록전체 글 (84)
코딩은 마라톤
CQRS명령(Command) 모델과 조회(Query) 모델을 분리하는 패턴명령 모델상태를 변경하는 기능을 구현할 때 사용한다.ex) 회원가입, 암호 변경, 주문 취소 등 상태(데이터)를 변경하는 기능조회 모델데이터를 조회하는 기능을 구현할 때 사용한다.ex) 주문 목록, 주문 상세처럼 데이터를 보여주는 기능 용도엔티티, 애그리거트, 리포지터리 등의 모델은 상태를 변경할 때 주로 사용한다.즉 도메인 모델은 명령 모델로 주로 사용된다. 정렬, 페이징, 검색 조건 지정과 같은 기능은 조회 기능에서 사용한다.즉 조회 모델을 구현할 때 주로 사용한다.스펙검색을 위한 스펙검색 조건이 고정되어 있고 단순하면 다음과 같이 특정 조건으로 조회하는 기능을 만든다.public interface OrderDataDao { ..
JPA를 이용한 리포지터리 구현모듈 위치리포지터리 인터페이스는 애그리거트와 같이 도메인 영역에, 구현할 클래스는 인프라스트럭처 영역에 속한다.리포지터리 기본 기능 구현ID로 애그리거트 조회하기애그리거트 저장하기public interface OrderRepository { Order findById(OrderNo no); void save(Order order);} 인터페이스는 애그리거트 루트를 기준으로 작성한다.위 리포지터리를 JPA로 구현하는 리포지터리는 JPA의 EntityManager를 이용해서 구현한다.@Repositorypublic class JpaOrderRepository implements OrderRepository { @PersistenceContext private Entity..
주의제목은 거창하지만 내용은 그렇지 않을 수 있습니다.. 최근에 생긴 고민큐시즘 동아리를 하면서 스터디와 2달 간 진행하는 밋업 프로젝트를 진행하고 있습니다.여러 활동을 진행하고 다양한 사람들을 만나면서 여러 안목을 쌓고 있는 와중에 고민이 생겼습니다. 누군가에게 내가 아는 내용을 알려줄 때, 그러나 확실하지 않은 내용일 때, (내 주관대로 내용을 정의하였을 때)1. 내가 아는 선에서 최대한 설명을 해준다. 애매모호함을 곁들인,,2. 모른다고 한다. 위의 고민거리가 대체 무슨 말이지?! 라고 이해 못하실 독자분들도 계실 거 같아 두 가지 예시를 들어 설명하겠습니다. 예시 1. MSA에서 다른 도메인의 정보를 어떻게 가져와야할까요?백엔드 스터디인 "큐백" 에서 스터디를 진행하고 있습니다.큐백에서는 여러 도..
저는 3학년 2학기 복학하면서 대외활동을 해보고 싶었고 특히 연합동아리를 해보고 싶었습니다.여러 동아리를 찾아 보던 중 큐시즘에 알 수 없는 끌림이 있었고 지원을 해서 서류 및 면접을 통해 30기 학회원이 되었습니다.서류와 면접 후기는 합격 후 바로 올렸어야 하는데,, 그래도 아직 기억이 새록새록하니 곧 올려보겠습니다?! 우선 오늘의 글은 큐시즘 합격 후기가 아닌 큐시즘의 첫 번째 프로젝트인 기업프로젝트에 대한 회고를 작성하고자 합니다. 기업프로젝트 선정 이유기업프로젝트는 제 기억 상 오티 때 바로 발표되었던 것으로 기억됩니다.3개 회사의 프로젝트가 존재했고 두 곳의 스타트업과 한 곳의 대기업이 있었습니다.스타트업은 최신 기술 스택을 사용하고 대기업은 일종의 레거시를 사용하고 있었습니다. 사실 세 개 ..
애그리거트개발할 때 상위 수준 개념을 이용해서 전체 모델을 정리하면 전반적인 관계를 이해하는 데 도움이 된다.↔ 도메인 객체 모델이 복잡해지면 개별 구성요소 위주로 모델을 이해하게 되고, 전반적인 구조나 큰 수준에서 도메인 간의 관계를 파악하기 어려워진다.→ 코드 유지보수성 및 확장성이 어려워진다.→ 복잡한 도메인을 이애하고 관리하기 쉬운 단위로 만들기 위해 상위 수준에서 모델을 볼 수 있어야 하는데 이 방법이 바로 "애그리거트" 다. 애그리거트는 모델 이해 뿐만 아니라 일관성을 관리하는 기준이 된다.애그리거트는 관련된 모델을 하나로 모았기 때문에 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클을 갖는다.주문 애그리거트 생성 시 Order만 생성하면 안되고 관련 객체를 함께 생성해야 한다.애..
4개의 영역표현, 응용, 도메인, 인프라스트럭처 는 아키텍처를 설계할 때 출현하는 전형적인 4가지 영역이다.표현 : 사용자의 요청을 받아 응용 영역에 전달 및 처리 결과를 사용자에게 보여주는 역할스프링 MVC 프레임워크가 표현 영역을 위한 기술에 해당응용 : 시스템이 사용자에게 제공해야 할 기능 구현기능을 구현하는데 도메인 영역의 도메인 모델을 사용한다.public class CancelOrderService { @Transactional public void cancelOrder(String orderId) { Order order = findOrderById(orderId); if (order == null) throw new OrderNotFoundException(orderId); // 도..
책 선정개발 방법론은 여러 개있는 걸로 알고 있다.예를 들면, 테스트 주도 개발(TDD), 도메인 주도 개발(DDD), 리드미 주도 개발(?) 등등TDD나 DDD를 공부해서 동아리 프로젝트때 도입시키고 싶은 욕구? 욕망? 이 컸다. TDD와 DDD 중에 DDD를 선택한 이유는 TDD보다 쉽지 않을까..? 라는 생각이 가장 컸다.TDD는 아무래도 테스트 코드 작성하는 과정이 좀 복잡할 거라고 생각했다. (물론 DDD 공부 후에 할거지만,,)그리고 1달 뒤에 시작하는 프로젝트에서 도입하려면 TDD보다는 DDD가 더 낫지 않을까 생각했다. (프로젝트에 도입할 수 있을까,,,)또 다른 이유로는 전 회사에서 DDD로 프로젝트를 진행하셨던 거 같은데 이미 프로젝트가 완성된 상황에서 입사한 상태였어서 패키지 구조나 ..
오랜만에 블로그 작성하네요,,,회사 적응 중이라 개인 공부를 하기 쉽지 않네요.. 는 변명이고 퇴근하고 집에 오면 너무 졸려요...ㅜ 뜬금없이 작성하는 이유는? 어제 코드 리뷰를 받다가 제가 이러한 코드를 작성했습니다.// 예시public static Computer of(Cpu cpu) { cpu = cpu != null ? cpu : gpu; // gpu는 cpu와 다른 예시 값입니다. ...} 코드 작성할 때"새로운 객체 생성하는 것보다 매개변수 객체를 재사용 하는 것이 낫겠군..!" 과 같이 생각하고 짯는데 메소드 개발 시 매개변수에 값을 할당하는 로직은 위험합니다참조 객체에 메소드 실행 후 set처리 되어 값 조작이 발생 가능합니다 위와 같은 코드리뷰를 받았습니다. 곰곰이 생각..