강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

타이한님의 프로필 이미지
타이한

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

JPA와 도메인 모델 패턴

JPA entity와 도메인 모델을 분리하는 케이스에 대한 질문입니다.

작성

·

9

0

JPA entity와 도메인 모델을 분리하는 케이스에서 데이터 저장 기술이 바뀌는 경우 Spring Data를 사용하면 해당되지 않는다고 하셨는데 JPA에서 MyBatis로 변경하는 경우도 Spring Data로 커버가 가능한가요?

 

회사에서 JPA로 개발을 진행중인데 MyBatis로 마이그레이션을 해야할수도 있어서 질문드립니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 타이한님께서 올려주신 질문에 대해 답변드리겠습니다.

JPA 엔티티와 도메인 모델을 분리하는 경우, 주된 이유 중 하나는 영속성 계층의 변경에도 도메인 모델이 영향을 받지 않도록 하기 위함입니다. 그러나 도메인 모델과 영속성 모델의 분리를 통해 영속성 기술이 변경되더라도 도메인 로직의 변화는 최소화할 수 있습니다. 이는 Spring Data와 같은 추상화 계층을 사용해서 데이터 접근 기술의 변화를 관리할 수 있는 방법 중 하나입니다.

Spring Data는 기본적으로 데이터 접근을 위한 인터페이스를 제공합니다. JPA가 아닌 다른 기술(MyBatis 등)로 마이그레이션할 때, 특정 데이터 접근 API의 변경에 대응할 수 있도록 설계되어 있습니다. 따라서 Spring Data의 추상화를 잘 활용하면, 데이터 저장 기술을 JPA에서 MyBatis로 변경하는 경우에도 도메인 로직과의 의존성을 최소화할 수 있습니다.

단, MyBatis로 전환하는 경우에는 MyBatis의 SQL 매퍼 특성에 맞춘 구조적 변화를 고려해야 합니다. MyBatis는 SQL을 직접 작성할 수 있는 장점이 있지만, JPA와는 접근 방식에서 차이가 있기 때문에, 반복적으로 사용하는 쿼리는 XML이나 어노테이션 매핑으로 관리하게 될 것입니다. 이 과정에서 Spring Data MyBatis 라이브러리 등을 활용하면 Spring Data의 포트폴리오 내에서 양호한 호환성을 유지할 수 있습니다.

관련해서 이미 JPA와 도메인 모델의 분리를 주제로 다룬 Q&A가 있으며, 이에 대해서 JPA와 도메인 모델 분리에 대한 접근 방식 게시물을 통해 추가 정보를 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

타이한님의 프로필 이미지
타이한

작성한 질문수

질문하기