먼저 이 라이브러리들이 나온 이유는
기존 JDBC만의 사용으로 쿼리문을 만들어 요청하는 과정에서
쿼리문 생성시 String을 붙히고 자르는 등의 작업이 필요해서 쿼리문이 조금만 길어져도 매우 번거롭고 관리도 힘들었다.
따라서 아래의 라이브러리를 사용하여 이런 문제를 해결할 수 있다.
하지만 두 라이브러리는 해결하는 방식이 조금 다른데 그 차이와 장단점이 무엇인지 살펴보자!
Mybatis
1. 쿼리문을 xml로 분리 가능
2. 복잡한 쿼리문 작성 가능
mybatis 장점: 복잡한 쿼리, 다이나믹 쿼리 이점
데이터 캐싱기능으로 성능을 향상 시킬 수 있다.
mybatis 단점: 비슷한 쿼리 남발. 객체와 쿼리문 모두 관리해주어야 함.
자주쓰는 CRUD 메소드를 직접 다 작성해주어야한다.
JPA
CURD 메소드를 기본적으로 제공한다.
Jpa 장점
1. CURD 메소드를 기본적으로 제공한다 & 쿼리를 안만들어도 된다.
2. 1차캐싱, 쓰기지연, 변경감지, 지연로딩을 제공한다.
3. Mybatis는 쿼리가 수정되어 데이터 정보가 바뀌면 그에 사용되고있던 DTO와 함께 수정해주어야하는데,
JPA는 객체만 바꾸어주면 된다. ( 객체 중심으로 개발가능)
Jpa 단점
1. 복잡한 쿼리는 해결이 까다로움
2. 학습곡선이 높다 ( 처음에는 학습하는데 시간이 걸림 )
3. 자동으로 생성되는 쿼리가 많기 때문에 성능저하의 가능성이 있고, 최적화가 필요하다.
- 복잡한 쿼리보다는 실시간 처리에 사용되는 쿼리에 적합하다.
관련글: JPA는 어떻게 구현되어 있을까?
https://lion-king.tistory.com/28?category=865302
'JPA' 카테고리의 다른 글
(JPA) JPA 성능개선이란? 성능개선 적용기 (fetch join/BatchSize) (3) | 2020.03.09 |
---|---|
(JPA) JPA 성능개선이란? 성능개선 목록 (N+1문제/read-only/Non-Transactional..) (0) | 2020.03.07 |
Spring JPA의 사실과 오해 - NHN FORWARD >> (0) | 2019.11.27 |
(JPA) JPA 영속성이란? 간단 요약 정리! (영속성 상태 / 기능) (0) | 2019.04.23 |
(JPA) JPA란? JPA는 어떻게 구현되어있을까? (0) | 2019.04.15 |
댓글