JPA-DDD 2 (readonly로 관계 맺기 / N+1 / ...)

readonly?

  • department - line 관계를 맺고싶을때?

  • 어떤 department가있다. 이department가 포함된 market - factory의 어떤 생산 line에서 제품을만든다

  • 강결합정도에 따라

    • 상호 참조 하지않고 service에서 로직으로 연관데이터 조합
    • readonly로 데이터 참조
    • read & write가능 (-> 지양하기, 하위 도메인취급이 되어버림)
  • 보수적으로 설계 -> 필요할때 하나씩 열어주는 방식으로 고려하면 :+1:

Read more

JPA-DDD 1 프로젝트 시작하기 - 1

시작하기전에


DDD / JPA기반의 프로젝트를 처음 도입하며 고민한 내용을 모아보았습니다.

모든 예제를 자세하게 다루지는 않습니다.
구체적인 예시보다는 방향성을 중점으로 봐주시면 감사하겠습니다.
같이 작업한 전OO님과 많은 의논을하며 공부했습니다. 감사합니다

의존성

1
2
3
4
5
dependencies {
...
compile("org.springframework.boot:spring-boot-starter-data-jpa")
...
}

DOMAIN 모델링 - 방향설정하기 ★★★★

  • 방향을 잘못정하면 관계가 복잡해진다 -> DDD의 의도와 맞지않음
  • 책임 관계가 모호해진다
  • ….
  • 자세한 권한설정및 방향은 뒤에서 다룸.

예제

공장에서 만든 제품을 매장공급한다고 가정

Read more

QueryDsl 적용 가이드 (SpringBoot-gradle-멀티모듈-JPA)

spring boot2.x / gradle /jpa 환경을 가정하였습니다.

//TODO : 자세한설명추가

Plugin 추가하기

멀티모듈 프로젝트로 가정했습니다
상위 프로젝트에서 플러그인을 셋팅했습니다.

build.gradle (멀티모듈 상위 에다가 셋팅함)

1
2
3
4
5
6
7
8
9
10
ext {
springBootVersion = '2.0.5.RELEASE'
querydslPluginVersion = '1.1.7' //이부분
}
...

dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:${querydslPluginVersion}")
}
Read more