강의

멘토링

커뮤니티

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

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

작성한 질문수

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

JPA와 도메인 모델 패턴

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

작성

·

42

0

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

 

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

답변 2

0

토비님의 프로필 이미지
토비
지식공유자

Spring Data 프로젝트처럼 리포지토리 선언만으로 많은 구현이 자동으로 되는 기술은 안타깝지만 MyBatis에는 적용되어 있지 않습니다. 온라인에 공개된 Spring Data MyBatis 프로젝트가 있긴한데 이게 어느 정도 수준으로 구현됐는지는 잘 모르겠습니다.

자동으로 리포지토리 구현을 만들어주는 기능을 바로 쓸 수는 없지만 Spring Data의 인터페이스 메소드 관례를 따라서 구현을 하신다면, 혹시라도 MyBatis에서 다른 스프링 데이터 지원 기술로 변경했을 때 조금 유리한 지점은 있을 것 같긴 합니다.

그리고 찾아보니 Spring Data JDBC 프로젝트에서 MyBatis를 일부 지원하고 있네요. 이것도 참고해보세요.

https://docs.spring.io/spring-data/relational/reference/jdbc/mybatis.html

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와 도메인 모델 분리에 대한 접근 방식 게시물을 통해 추가 정보를 얻으실 수 있습니다.

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

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

작성한 질문수

질문하기