개발일지

[개발일지_safeHome] 3. sample 도메인 추가(패키지 설계)

woopii 2025. 12. 7. 23:34

1. Sample 도메인 작성의 필요성

일종의 기준을 잡기위한 용도

컨벤션의 기준이 되고

새로운 도메인을 작성할때 참고하는 용도

 

2. Sample Domain 패키지,클래스 작성

헥사고날 아키텍처 기반의 패키지 구조로 패키지 및 Sample 클래스를 작성

우선, 클래스 껍데기만 설계

아래와 같이 작성함

각 패키지 별로

  • adapter/inbound.web/
    • dto/: HTTP 요청/응답 DTO
    • SampleInboundWebAdapter: REST API 컨트롤러
  • adapter/outbound.persistence/
    • jpa/
      • SampleEntity: JPA 엔티티
      • SampleRepository: Spring Data JPA 인터페이스
    • SamplePersistenceAdapter: 영속성 포트 구현체
  • application/port/
    • port/
      • inbound/SampleUseCase: 유스케이스 인터페이스
      • outbound/SamplePersistencePort: 영속성 포트 인터페이스
    • usecase/
      • SampleUseCaseImpl: 유스케이스 구현체 (비즈니스 로직)
  • model/
    • Sample: 도메인 모델
    • SampleMapper: 객체 변환 유틸리티

 

이렇게 설계하고 API 호출의 흐름은 다름과 같이 하려고 한다.

 

[클라이언트]
    ↓ HTTP 요청

1. SampleInboundWebAdapter
   - SampleRequest 수신
   
    ↓ useCase 호출
    
2. SampleUseCaseImpl

   - Mapper: Request → Domain Model
   - 비즈니스 로직 실행
   - Domain Model 처리
   
    ↓ persistencePort 호출
    
3. SamplePersistenceAdapter
   - Mapper: Domain Model → Entity
   - repository 호출
   
    ↓ JPA 쿼리 실행
    
4. SampleRepository
   - DB Select/Insert/Update
   
    ↓ 쿼리 결과 반환
    
5. SamplePersistenceAdapter
   - Mapper: Entity → Domain Model
   
    ↓ persistencePort 응답
    
6. SampleUseCaseImpl
   - 비즈니스 로직 완료

   - Mapper: Domain Model → Response
   
    ↓ useCase 응답
    
7. SampleInboundWebAdapter

   - SampleResponse 응답
    ↓ HTTP 응답
[클라이언트]