MyBatis와 JPA

Gunjoo Ahn·2022년 8월 11일
0
post-custom-banner

📌MyBatis

Java 진영에서 대표적인 SQL Mapper중 하나이다. SQL과 쿼리 결과를 mapping할 객체만 설정하면 JDBC API를 직접 다루지 않아도 쿼리 결과를 mapping한 객체에 담아준다.

👍장점

SQL을 직접 작성하므로 복잡한 SQL을 직접 최적화하는 것이 용이하다.
테이블과 객체가 매핑된 것이 아니기에 자유롭게 다양한 객체에 결과를 담을 수 있다.

👎단점

테이블 스키마 수정시 SQL부터 매핑한 객체까지 수정사항이 많다.
런타임에 에러를 확인할 수 있다.
작성된 쿼리가 특정 데이터베이스에 종속된 것일 수 있어, 데이터베이스 변경에 유연하지 못하다.

📌JPA

Java Persistence API의 줄임말로 Java 진영에서 ORM 기술 표준으로 사용하는 인터페이스 모음이다. JPA 구현체로는 Hibernate, Eclipse Link, OpenJPA 등이 있다.

👍장점

쿼리 작성이 필요없어, SQL에 익숙하지 않아도 바로 개발이 가능하다.
DB에 종속적이지 않아 DB 변경에도 코드 변경이 없다.
객체지향적으로 Data를 다룰 수 있다.
객체와 매핑되어있어 객체 변경을 통하여 테이블 스키마 수정이 가능하여 편리하다.
컴파일타임에 에러를 확인할 수 있다.

👎단점

러닝 커브가 있다.
복잡한 쿼리의 최적화에 적합하지 않다.
잘못사용하면 오히려 성능저하가 있을 수 있다. (N + 1 문제 등)

Reference

https://incheol-jung.gitbook.io/docs/q-and-a/spring/jpa-vs-mybatis
https://velog.io/@gkskaks1004/JPA%EC%99%80-MyBatis%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%EC%84%9C-%EC%9E%A5%EB%8B%A8%EC%A0%90

profile
Backend Developer
post-custom-banner

0개의 댓글