Spring Data Jpa와 Mybatis의 차이 ?
작년 하반기에 스타트업 인턴으로 근무했을 때는 Spring Data Jpa보다는 Mybatis를 활용해 쿼리를 짜는 경우가 더 많았다.
하지만 작년 상반기에 진행했던 캡스톤 프로젝트에서는 Spring Data jpa를 이용하여 프로젝트를 진행하였다.
둘 다 진행해본 경험이 있어서 말해보자면
둘 다 장단점이 존재한다.
MyBatis의 장점
Mybatis의 경우에는 쿼리를 개발자가 직접 작성하기 때문에 최적화된 쿼리를 구현할 수 있다.
또한 복잡한 쿼리도 작성할 수 있다.
MyBatis의 단점
쿼리를 직접 작성하기 때문에 데이터 베이스에 종된 쿼리문이 발생할 수 있어 데이터 베이스 변경 시 로직도 함께 수정해야된다.
또한 자주 느꼈던 단점이였는데 반복된 쿼리가 발생하여 반복 작업이 있다.
또한 객체에 필드를 하나 추가할 때도 관련된 sql문까지도 변경해야되서 sql에 의존적이다.
Jpa의 장점
부모-자식 관계 표현, 1:N 관계 표현 등 객체지향적인 프로그래밍이 가능하다.
Jpa의 단점
복잡한 쿼리를 처리하기 힘들다.
객체간의 매핑 설계를 잘못했을 경우에는 성능 저하가 발생할 수 있고, 자동으로 생성되는 쿼리가 많아 N+1문제 같이 성능이 저하되기도 한다.