inflearn logo
강의

Course

Instructor

A developer's cheat sheet for adding Java/Spring tests

Distinguishing between domain and persistent objects

도메인 객체 / entity 객체 / requset, response 객체 간 mapping 시 mapper 사용

338

pjsw83613437

13 asked

1

안녕하세요. 관련 내용을 듣다가 궁금한 것이 생겨 질문드립니다.

해당 강의를 듣다가 궁금한 것이 생겨 질문드립니다.

찾아보니 DDD나 헥사고날 아키텍처에서
request / response 객체 <-> 도메인 객체 <-> entity 객체 간의 mapping이 일어나는 것을 볼 수 있는데요..

이런 경우 controller, service, infral layer가 모두 mapper 관련 라이브러리 객체나 직접 구현한 mapper 객체를 들고 변환시켜주는 구조는 별로 좋지 못한 구조일까요?
제 개인적인 의견으로는 결국 지금 구조에서 response / request 객체나 entitiy 객체가 domain 객체로 변환시켜주기위해 domain 객체에 의존성이 생기는 구조인데 mapper 객체를 쓰면 이런 객체간의 의존성을 최소화시킨다는 점에서 장점이 있을 것 같은데요..

 

물론 정답은 없겠지만, 의견이 어떠신지 궁금하여 질문드립니다.

spring tdd jpa 소프트웨어-테스트 unittest

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

질문해주신 내용이 매우 흥미롭네요. 객체 간의 매핑과 관련된 의존성 문제는 소프트웨어 설계에서 중요한 고려 사항 중 하나입니다. DDD나 헥사고날 아키텍처를 채택함으로써 레이어 간의 철저한 분리와 책임의 명확화를 지향하는 것은 맞으며, 이 경우 매퍼 역할이 중요해집니다.

매퍼를 사용하는 구조가 별로 좋지 않은 구조라고 단정 지을 수는 없습니다. 실제로 각 레이어와 객체 간의 변환을 명확하게 하여, 관심사의 분리를 더욱 촉진하고 유지보수성을 향상시킬 수 있는 장점이 있습니다. 또한, 매퍼를 통해 객체 간의 의존성을 최소화시켜줌으로써 더 유연하고 확장 가능한 설계가 가능해집니다.

하지만 매퍼의 사용이 코드의 복잡성을 증가시키고, 런타임 성능에 영향을 줄 수 있다는 단점도 고려되어야 합니다. 따라서 구체적인 프로젝트의 요구사항, 팀의 기술 스택과 선호도, 유지보수의 용이성 등 여러 요소를 고려하여 최적의 접근 방식을 결정하는 것이 중요합니다.

즉, 올바른 매퍼 사용이 소프트웨어의 아키텍처를 더욱 견고하게 만들고 유지보수를 용이하게 할 수 있음에도 불구하고, 그 사용을 결정할 때는 신중한 고려가 필요합니다. 박정선님의 팀과 프로젝트에 가장 적합한 방법을 선택하시길 바랍니다.

UserService, CertificationService 책임 분리 기준 질문

0

21

1

service.port 패키지로 이동한 UserRepository가 infrastructure에 있는 UserEntity에 의존

0

56

1

Service 소형 테스트 질문

0

76

1

조회 시 엔티티를 조회하는 것이 아닌QueryDSL을 많이 사용 시 Dto는 어떻게 하나요?

0

114

1

controller 의 port 패키지의 service 인터페이스 사용

0

70

1

빌드 문제

0

90

1

빌드 안 되시는 분들 참고

0

101

1

update에서 Repository.save

0

103

1

최종 완성된 코드를 받아 볼 수 있을까요?

0

153

1

의존성 역전으로 해결한 외부의존성?

0

160

1

좋은 설계

0

176

1

Controller에 테스트

0

137

1

JPA가 아닌 Mapper 아키텍처 기반 테스트 코드 작성

0

238

0

영속성 객체 구분으로 인한 JPA와 Querydsl의 Projection 사용

0

221

1

인프라계층 구현체와 테스트 구현체에 대한 질문

0

220

1

실습 코드 커밋

0

369

1

UserEntity 메서드

0

291

2

CertificationServiceTest에서 MailSender 인터페이스가 아닌 FakeMailSender를 이용하는 것

0

215

1

레이어드 아키텍처 개발에 대하여

0

229

1

BDDMockito의 when을 사용한 코드가 given 절에 있는 이유가 궁금합니다.

0

222

1

테스트에서 주입과 생성

0

197

1

프로젝트 코드는 제공해주시지 않는건가요?

0

377

2

개선된 아키텍처의 구조

0

274

1

서비스 레이어의 단위 테스트 범위 고민

0

184

1