인프런
진화하는 아키텍처
date
Mar 12, 2025
slug
test-on-spring-with-architecture-6
status
Public
tags
테스트를 추가하고 싶은 개발자들의 오답노트
author
summary
아키텍처와 테스트 그리고 헥사고날
type
Post
thumbnail
updatedAt
Mar 24, 2025 01:19 PM
category
인프런
📝 강의 정리테스트 하기 좋은 코드가 정답일 확률이 높다아키텍쳐아키텍트의 목표헥사고날 아키텍쳐[1] JpaRepository as Repository[2]. JpaRepository as RepositoryImpl📎 출처
📝 강의 정리
테스트 하기 좋은 코드가 정답일 확률이 높다
아키텍쳐
- 고정된 산출물이 아니라 계속된 탐구 과정이다
아키텍트의 목표
- 인적 자원 절감
- 동시 작업이 가능하게
- 이는 결국 경계를 만드는 과정
→ 관심사를 분리
→
의존성 역전
및 다른 여러 방법- 정책을 만들고 세부사항을 미루는 시스템 개발
- 개발 초기에는 세부사항을 선택할 필요가 없다
- 도메인이 먼저 개발되어야 한다.
→ DBMS, 웹 서버, REST, 의존성 프레임 워크
헥사고날 아키텍쳐
[1] JpaRepository as Repository
- JPA Repository 또한 인터페이스이기 때문에 테스트에서 FakeRepository를 상속하게 할 수 있다.
- Fake가 불필요한 인터페이스를 구현해야 한다.
- Domain Entity가 Persistence Entity에 종속된다.
그러나,
[2]. JpaRepository as RepositoryImpl
interface UserRepositoryImpl extends UserRepository, JpaRepository<UserEntity, Long> ... interface UserRepository { Optional<UserEntity> method(); }
- 가령 findByIdAndStatus라는 메서드를 호출할 때, JpaRepository가 해당 메서드만 호출해준다. 따라서, 1에서의 모든 메서드를 구현할 필요가 없다.
- JpaRepository의 메소드에서 UserEntity를 반환받으므로,
그러나,
이 또한, Domain Entity가 Persistence Entity에 종속되는 같은 문제가 발생