studying...
  • 노트의목적
  • 웹전반
    • HTTP
      • 1. HTTP
      • 2. HTTP_Client
      • 3. HTTP_Server
      • 4. JAVA_HTTP_Server
      • 5. Spring_Web_MVC
    • REST_API
      • 1. REST_API
      • 2. URI&MIME_type
      • 3. COLLECTION_Pattern
      • 4. COLLECTION_Pattern_adjustment
      • 5. Spring_Web_MVC
    • DTO_JSON_CORS
      • 1. DTO
      • 2. 직렬화
      • 3. Jackson
      • 4. CORS
    • Layered_Architecture
      • 1. Layered_Architecure
      • 2. Data_Access
      • 3. Domain_Model
    • DI&Spring_Test
      • 1. Dependency_Injection
      • 2. Unit_Test
      • 3. Spring_Test
      • 4. TDD
    • Database
      • 1. Database
      • 2. Relational_Model
      • 3. JDBC
    • JPA
      • 1. ORM
      • 2. Hibernate
      • 3. Embeddable
      • 4. Relationship Mapping
      • 5. Spring Data JPA
    • 도메인_주도_설계
      • 1. DDD
      • 2. Strategic Design
      • 3. Entity, Value Object
      • 4. Aggregate
      • 5. Repository
    • Hexagonal_Architecture
      • 1. SOLID
      • 2. Hexagonal_Architecture
      • 3. 도메인 주도 설계 핵심
    • Spring_Security
      • 1. 애플리케이션 보안
      • 2. 인증
      • 3. 로그인 & 로그아웃
      • 4. 회원가입
      • 5. JWT&Authority
    • File_Upload
      • 1. Multipart_FormData
      • 2. Separation_of_Concerns
      • 3. Cloudinary
    • CQRS
      • 1. CQRS
      • 2. Redis
  • 면접대비
  • book
    • RealMySQL8.0
      • 4장
      • 5장
      • 8장
      • 9장
    • Object
      • 1장
      • 2장
      • 3장
      • 4장
      • 5장
      • 6장
      • 7장
      • 8장
      • 9장
    • ModernJava
      • ch1
      • ch2
    • 클라우드네이티브를위한 쿠버네티스 실전 프로젝트
      • 1장
      • 2장
      • 3장
      • 4장
    • 테라폼 쿡북
      • 2장
      • 3장
      • 4장
      • 5장
      • 6장
  • lecture
    • 외워서끝내는네트워크기초
    • 외워서끝내는네트워크심화
    • aws
      • Architecting_on_AWS
      • Architecrting-advanced
      • Developing_on_AWS
      • migration_essentials
      • Resilience
      • Running_Containers_on_EKS
    • Ansible
    • k8s
      • section2
      • section3
    • Terraform
  • experiences
    • workshops
      • EKS
Powered by GitBook
On this page
  • 리파지터리 (Repository)
  • Application Layer와 UI Layer
  1. 웹전반
  2. 도메인_주도_설계

5. Repository

Previous4. AggregateNextHexagonal_Architecture

Last updated 1 year ago

리파지터리 (Repository)

Repository는 Aggregate를 관리하는 Collection처럼 작동한다.

  1. 오직 Aggregate만 Repository를 갖는다.

  2. Repository는 영속화 방법 및 기술을 감춘다.

Spring Data JPA는 Aggregate에 대해서만 Repository를 만들어도 CascadeType.ALL과 orphanRemoval = true 같은 기능을 제공하고 있고 Persistence Context를 통해 Collection처럼 사용하는게 가능하면 인터페이스만 만들면 나머지는 크게 신경 쓰지 않아도 되는 기능까지 제공한다

따라서, 우리는 적절한 Aggregate를 발견하고 적절히 책임을 나눌 수 있도록 Entity와 Value Object로 구성하고 이를 위한 Repository를 만듦으로써 비즈니스 도메인에만 집중할 수 있게 된다.

이렇게 비즈니스 도메인에 집중한 코드를 모아둔 곳은 Domain Layer라고 부르면, Repository와 Aggregate를 사용하는 코드가 모인 곳을 Application Layer, Web등 구체적인 기술로 사용자와 소통하는 코드가 모인 곳을 UI Layer라고 부른다.

Application Layer와 UI Layer

리파지터리 (Repository)
Application Layer와 UI Layer