인프런 커뮤니티 질문&답변
JPA entity와 도메인 모델을 분리하는 케이스에 대한 질문입니다.
작성
·
42
답변 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와 도메인 모델 분리에 대한 접근 방식 게시물을 통해 추가 정보를 얻으실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




