728x90
반응형
SMALL
저번 포스팅때 Mybatis와 JPA를 사용해서 RESTful API만드는 시간을 갖었는데
각각의 이론과 둘의 차이점 각 장단점 등 비교해서 알아보는 시간을 갖겠습니다.
MyBatis
마이바티스(MyBatis)는 자바 퍼시스턴스 프레임워크의 하나로 XML 서술자나 애너테이션(annotation)을 사용하여 저장 프로시저나 SQL 문으로 객체들을 연결시킨다.
마이바티스는 아파치 라이선스 2.0으로 배포되는 자유 소프트웨어이다.
마이바티스는 IBATIS 3.0의 포크이며 IBATIS의 원 개발자들이 포함된 팀에 의해 유지보수되고 있다.
출처 : 위키백과
장점
- 접근이 쉽고 코드가 간결하다.
- SQL문과 코드가 분리되어 SQL 변경있을때마다 코드를 수정하거나 컴파일 하지않아도 된다.
- 다양한 프로그래밍 언어로 구현 가능
단점
- 스키마 변경시 SQL 쿼리를 직접 수정해줘야 한다.
- 반복된 쿼리가 발생하여 반복 작업이 있다.
- 쿼리를 직접 작성하기 때문에 데이터 베이스에 종속된 쿼리문이 발생할 수 있다.
- 데이터 베이스 변경시 코드도 함께 수정해야 한다.
JPA
자바 퍼시스턴스(Java Persistence, 이전 이름: 자바 퍼시스턴스 API/Java Persistence API) 또는 자바 지속성 API(Java Persistence API, JPA)는 자바 플랫폼 SE와 자바 플랫폼 EE를 사용하는 응용프로그램에서 관계형 데이터베이스의 관리를 표현하는 자바 API이다.
기존에 EJB에서 제공되던 엔터티 빈(Entity Bean)을 대체하는 기술이다. 자바 퍼시스턴스 API는 JSR 220에서 정의된 EJB 3.0 스펙의 일부로 정의가 되어 있지만 EJB 컨테이너에 의존하지 않으며 EJB, 웹 모듈 및 Java SE 클라이언트에서 모두 사용이 가능하다. 또한, 사용자가 원하는 퍼시스턴스 프로바이더 구현체를 선택해서 사용할 수 있다.
출처 : 위키백과
장점
- 쿼리를 하나하나 작성할 필요가 없기에 코드량이 줄어든다.
- 가독성이 좋다.
- 간편히 수정가능
- 동일한 쿼리에 대한 캐시 기능을 사용하기 때문에 더욱 높은 성능을 낼 수 있다.
단점
- 매핑 설계를 잘못했을때 성능 저하가 발생할 수 있다.
- JPA를 제대로 사용하려면 알아야 할 것이 많아 학습하는데 오래 걸린다.
- 다수의 테이블 조인시 복잡하다.
JPA vs MyBatis
JPA는 객체 중심의 개발 방식이며, 개발자가 직접 SQL를 작성하지 않고 객체로 관리할 수 있는 장점이고
MyBatis는 SQL를 직접 작성할 수 있기에 개발자가 자유롭게 데이터 베이스를 다룰 수 있는 장점이 있다.
둘 중에 뭐가 더 편한 지는 개발자 본인의 주관적 선호도에 따라 갈리는 것이 필자의 생각이다.
이번 포스팅을 준비하면서 검색을 해봤는데 구글 트렌드는 전세계 기준으로 5년동안 JPA가 검색량이 더 많은 걸 확인 할 수 있었다.
최근의 추세는 확실히 JPA가 강점이지만 아직 우리나라는 SI&금융 기업이 많기 때문에 MyBatis를 쓰는 회사가 아직도 많이 있다는 것 또한 알 수 있기 때문에 JPA, MyBatis 둘 중의 하나만 알고 있기보단 두 기술 모두 다 배우고 쓸 줄 아는 것이 좋을 거 같다.
JPA 단점에도 써놨지만 기본적인 SQL 지식이 있다는 가정 하에 JPA가 배울 게 더 많기에 먼저 JPA를 배우고 그 다음
MyBatis를 배우는 게 더 좋겠습니다.
728x90
반응형
LIST
'Study' 카테고리의 다른 글
[chatGPT]자바(java) 개발 도구와 생태계: 효율적인 자바 개발을 위한 핵심 도구들 (0) | 2023.10.11 |
---|---|
[java] Stream (스트림) 파헤치기 (0) | 2023.10.11 |
[Spring] DI(Dependency Injection) - 의존성 주입 (0) | 2023.10.09 |
WAS와 WS의 차이 파헤치기 (0) | 2023.10.07 |
CI/CD 파헤치기 (0) | 2023.10.06 |