용어 정리

MyBatis vs JPA

그기고기 2024. 1. 16. 14:23
728x90
반응형
SMALL

1. MyBatis 란 ?

- 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임 워크이다.

- 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 SQL Mapper 이다.

- 기존 JDBC를 사용할 때는 DB와 관련된 여러 복잡한 설정을 했어야 하지만 SQL Mpaaer는 Java객체를 실제 SQL문에 연결함으로써, 빠른 개발과 편리한 테스트환경을 제공한다.

- 데이터베이스 record에 원시 타입과 Map 인터페이스에 매핑하기 위해 xml과 Annotation 을 이용할 수 있다.

 

2. MyBatis 장점

- SQL 쿼리를 직접 작성하므로 최적화된 쿼리를 구현할 수 있다.

- SQL 쿼리를 그대로 사용하기 때문에 복잡한 쿼리를 좀 더 수월하게 작성 가능하다.

- SQL의 세주적인 내용 변경 시 좀 더 간편하다.

- 엔티티에 종속받지 않고 다양한 테이블을 조합할 수 있다.

- 동ㅈ억 쿼리 사 시 JPA보다 간편하게 구현 가능하다.

 

3. MyBatis 단점

- 스키마 변경시 SQL 쿼리를 직접 수정해야 한다.

- 반복된 쿼리가 발생하여 반복 작업이 존재한다.

- Mapper 작성부터 인터페이스 설계까지 JPA보다 많은 설계와 파일, 로직이 필요하다.

- 쿼리를 직접 작성하기 때문에 데이터베이스에 종속된 쿼리문이 발생할 수 있다.

- DBMS를 변경할 경우 수정해야 할 로직이 많다.

- 컴파일 시점이 아닌, 런타임 시점에 오류 확인이 가능하다

 

4. JPA 란?

- JPA는 Java Persistence API 의 약자로 Java ORM 기술에 대한 API 표준 명세를 말한다.

- JPA는 단순한 명세이기 때문에 JPA만 가지고는 어떤 구현 기술을 사용할 수 없다.

- Spring Data JPA는 JPA를 간편하게 사용하도록 만들어놓은 오픈 소스일 뿐이다.

 

5. JPA의 장점

- 특정 데이터베이스에 종속되지 않는다.

-> 예를 들어 데이터베이스로 오라클을 사용하여 개발을 진행하였다. 만약 오라클에서 MariaDB로 변경해야 한다면 데이터베이스마다 쿼리문이 다르기 때문에 전체를 수정해야 한다. 하지만 JPA는 추상화한 데이터 접근 계층을 제공하기 때문에 설정파일에 어떤 데이터베이스를 사용하는지 알려주면 얼마든지 데이터베이스를 변경할 수 있다.

- 객체지향적 프로그래밍이다.

-> JPA를 사용하면 데이터베이스 설계 중심의 패러다임에서 객체지향적으로 설계가 가능하다.

- 생산성 향상

-> SQL문을 직접 작성하지 않고 객체를 사용하여 동작하기 때문에 유지보수 측면에서 좋고 재사용성도 증가한다.

 

 

6. JPA의 단점

- 복잡한 쿼리 처리

-> 통계 처리 같은 복잡한 쿼리를 사용할 경우는 SQL 문을 사용하는게 나을 수도 있다. 

- 성능 저하 위험

-> 객체 간의 매핑 설계를 잘못했을 때 성능 저하가 발생할 수 있다.

- 학습 시간

-> 제대로 JPA를 사용하는데 까지 학습시간이 오래걸림

 

 

*출처

[Java] Mybatis와 JPA 차이 비교 : 네이버 블로그 (naver.com)

 

[Java] Mybatis와 JPA 차이 비교

Mybatis와 JPA 차이 비교 Mybatis Mybatis는 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지...

blog.naver.com

JPA란 무엇인가, 그리고 장단점은 뭐가 있을까? (velog.io)

 

JPA란 무엇인가, 그리고 장단점은 뭐가 있을까?

JPA(Java Persistence API)는 자바 ORM 기술에 대한 API 표준이다. ORM이란 Object Realational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말한다. 그렇다면 ORM기술은 왜 나왔을까? JPA를 공

velog.io

 

728x90
반응형
LIST

'용어 정리' 카테고리의 다른 글

DBMS, RDBMS  (0) 2024.01.15
optional  (1) 2024.01.11
Import  (0) 2024.01.11
MVC, SpringMVC  (1) 2024.01.11
라이브러리 vs 프레임워크  (0) 2024.01.10