본문 바로가기

전체 글47

[DDD] 이벤트 처리하기 : 1. 동기 vs 비동기 본 포스팅은 DDD 를 공부하면서 정리하기 위한 포스팅입니다. 아래 내용에 사용된 코드는 책에서 인용했거나, 필자의 git에서 확인할 수 있습니다. 출처: 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) git : https://github.com/dongha-byun/ddd-start 1. 강결합(High Coupling) 객체지향 프로그래밍 언어를 공부하다보면 결합도(Coupling) 라는 얘기를 한 번 쯤은 듣게 됩니다. 결합도란, 두 객체간의 연관성을 의미하며 어떤 객체 A를 수정했을 때, B 객체도 수정해야 한다면, A객체와 B객체는 결합도가 높다고 표현합니다. 강결합이란 이러한 결합도가 매우 강한 경우를 얘기합니다. 예를 들면, 쇼핑몰에서 주문을 취소하는 로.. 2023. 7. 24.
[DDD] 바운디드 컨텍스트(Bounded Context) 본 포스팅은 DDD 를 공부하면서 정리하기 위한 포스팅입니다. 출처: 도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지 (저자. 최범균) 1. 바운디드 컨텍스트(Bounded Context) 하나의 큰 도메인은 작은 여러 개의 하위 도메인을 가질 수 있습니다. 이 과정에서 각자 다른 도메인이지만, 같은 용어를 다른 의미로 사용하는 경우가 있습니다. 예를 들어, 온라인 쇼핑몰 이라는 하나의 큰 도메인에 회원 도메인과 주문 도메인이 하위 도메인으로 존재한다고 가정해보겠습니다. 그리고 각 도메인에 아래와 같은 기능이 존재한다고 해보겠습니다. 회원 도메인 : 쇼핑몰 회원이 자신의 회원정보를 변경할 수 있다. 주문 도메인 : 쇼핑몰 회원은 상품 주문 시, 배송지를 변경할 수 있다. 두 도메인 모두.. 2023. 7. 19.
[JPA] JPA 쿼리 로그 및 파라미터 바인딩 확인하기 (SpringBoot3 버전) JPA 를 공부하면, 아래와 같은 설정을 많이 보게됩니다. 아래 설정은 JPA 에서 실행하는 쿼리를 IDE console 창에 출력해서 쿼리를 확인하기 위해 사용합니다. # application.yml spring: jpa: show-sql: true properties: hibernate: format_sql: true use_sql_comments: true logging: level: org.hibernate.type: trace 위 처럼 application.yml(혹은 application.properties) 를 적용하면, 아래처럼 JPA 에서 발생하는 쿼리와 파라미터를 볼 수 있습니다. 그런데.... 당연히 이렇게 알고... 새로운 프로젝트에 동일하게 세팅했음에도.... 파라미터 바인딩 로그.. 2023. 7. 8.
[JPA] @AttributeOverrides 와 @Embedded 로 간결한 도메인 객체 만들기 1. 너무 많은 필드를 보유한 도메인 객체 사이드 프로젝트로 쇼핑몰을 개발하던 중, 사용자 정보를 가지는 도메인 객체에 필드가 아래와 같이 많아졌습니다. @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 20, nullable = false) private String userName; @Column(length = 30, unique = true, nullable = false) private Str.. 2023. 7. 6.
[QueryDSL] SpringBoot3 버전 QueryDSL 설정하기 JPA 혹은 Spring Data JPA 를 사용해서 프로젝트를 진행하다 보면, 특정 경우에서 오는 불편함을 지울 수 없습니다. 예를 들면, 검색쿼리 같이 조건문이 여러 조합으로 되는 경우나, Entity 를 조회하는 것이 아닌 DTO를 조회하는 경우 등과 같은 경우가 있습니다. 이런 단점을 보완하기 위해, JPA를 사용하는 곳에선 QueryDSL 을 같이 사용하는 곳이 많다고 합니다. 저 또한, QueryDSL 을 사용하면서 사이드 프로젝트를 진행하는데, 설정방법을 매번 찾아보기 번거로워 블로깅해봅니다. 0. 구성환경 QueryDSL 에서는 maven 에 대한 가이드는 제공하면서... gradle에 대한 가이드는 제공해주지 않습니다... (이유는 모르겠슴돠...ㅠ 아시는 분 댓글 부탁드려용 ㅎ) 그래서.. 2023. 6. 30.
Access to XMLHttpRequest at 'http://localhost:8888/api/v1/login' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on .. 아래 환경에서 개발하다가 로그인 기능을 테스트하는 단계에서 발생한 오류입니다. Front-End : React (axios 사용) 3000번 포트 서비스 Back-End : Java / Spring 8888 포트 서비스 위 에러가 발생한 원인은 웹 상에 존재하는 "동일 출처 정책" 이라는 보안 정책에 위배되는 요청을 보냈기 때문입니다. 아래는 동일 출처 정책에 대한 설명입니다. 동일 출처 정책(same-origin policy)은 어떤 출처에서 불러온 문서나 스크립트가 다른 출처에서 가져온 리소스와 상호작용하는 것을 제한하는 중요한 보안 방식입니다. 동일 출처 정책은 잠재적으로 해로울 수 있는 문서를 분리함으로써 공격받을 수 있는 경로를 줄여줍니다. 출처 : https://developer.mozilla.. 2023. 6. 27.