Backend

3편: https://saysimple.tistory.com/201본론저번 글에선 Aggregate와 Handler를 마저 리뷰했습니다. 이번 시간에는 제 입맛에 맞게 디렉토리 구조를 리팩토링하고 유저 서비스를 Aggregate에 추가해 보겠습니다.구조폴더 구조는 저번 구조에서 아래와 같이 변경하였습니다. 설정 파일, 컨트롤러, service, dto 등을 기존 스프링부트 파일 구조와 같이 가져갔으며 command, query, event를 모델로 분리 하였습니다. 또한 메모리에서 변경이 일어나는 부분을 Aggregate, 실제 저장소에서 읽기, 변경이 일어나는 부분을 Handler로 분리하였습니다.└─src ├─main │ ├─java │ │ └─com │ │ └─..
2편: https://saysimple.tistory.com/199 [SpringBoot] Axon을 사용해 CQRS와 이벤트 소싱이 적용된 Order 서비스 만들기 - 2 1편: https://saysimple.tistory.com/197 [SpringBoot] Axon을 사용해 CQRS와 이벤트 소싱이 적용된 Order 서비스 만들기 - 1 CQRS에 대한 정보는 아래 글을 참고해주세요. https://saysimple.tistory.com/196 [CQRS] CQRS란? CQRS CQR saysimple.tistory.com 서론 저번 시간에는 테스트 코드를 리뷰했습니다. 이번 시간에는 Handler와 Aggregate를 리뷰해 어떻게 Command, Query를 실행하고 Event를 발행하는지 알..
1편: https://saysimple.tistory.com/197 [SpringBoot] Axon을 사용해 CQRS와 이벤트 소싱이 적용된 Order 서비스 만들기 - 1 CQRS에 대한 정보는 아래 글을 참고해주세요. https://saysimple.tistory.com/196 [CQRS] CQRS란? CQRS CQRS란 Command and Query Responsibility Segregation 의 약자입니다. 저장소로부터 질의/명령을 이용하여 읽기/ 쓰기 작 saysimple.tistory.com 서론 저번 글에선 Axon을 이용한 CQRS구조를 Postman을 이용해 테스트 해보았습니다. 이번 글에선 유닛 테스트, 통합 테스트를 통해 테스트의 시나리오를 구성하는 방법과 테스트 코드를 리뷰해 ..
CQRS에 대한 정보는 아래 글을 참고해주세요. https://saysimple.tistory.com/196 [CQRS] CQRS란? CQRS CQRS란 Command and Query Responsibility Segregation 의 약자입니다. 저장소로부터 질의/명령을 이용하여 읽기/ 쓰기 작업을 분리하여 애플리케이션의 성능, 확장성, 보안성 등을 증가시키는 방법입니다. saysimple.tistory.com 서론 스프링 부트에서는 CQRS를 구현하기 위해 Axon 라이브러리를 사용합니다. baeldung의 글을 참고해 스프링 부트에선 어떻게 CQRS를 구현하는지 알아보겠습니다. 해당 예제에선 Axon Server를 이벤트 스토어로 사용하며 Postman을 이용해 테스트합니다. 이번 글에선 API와..
리뷰 엔티티에서 ColumnDefault를 사용해 리뷰를 만들 때 rating을 0으로 초기화 하고자 했는데 아래와 같은 에러를 마주하였다.java.sql.SQLException: Column 'rating' cannot be null자바의 rating 값이 null 로 전달된 것이다. 왜 이렇게 되었을까?@ColumnDefault()필자가 사용한 코드는 아래와 같다. ColumnDefault에 값이 0으로 올바르게 설정되어 있다. @Column(nullable = false) @ColumnDefault("0") private Integer rating;하지만 hibernate에선 create-drop일 때만 default 쿼리를 날린다.그렇기 때문에 컬럼에 default 설정이 되지 않..
Matching Strategy Standard 기본값 MatchingStrategies.STANDARD Token들은 임의의 순서로 매칭될 수 있다. 모든 destination 속성 이름 토큰이 무조건 매칭되어야 한다. 모든 source 속성명에 매칭될 토큰이 하나 이상 있어야 한다. 정확하지 않은 반면에 대부분의 상황에서 이상적이다. Loose MatchingStrategies.LOOSE Token들은 임의의 순서로 매칭될 수 있다. 마지막 destination 속성 이름은 모든 토큰이 매칭되어야 한다. 마지막 source 속성 이름에는 매칭될 토큰이 하나 이상 있어야 한다. 매우 다른 속성 계층을 가진 source와 destination 개체 모델에 사용하는 것이 이상적이다. 더 높은 수준의 모호한..
Say simple
'Backend' 카테고리의 글 목록