티스토리 뷰
JPA와 MyBatis의 장단점으로 차이를 알아보고자 한다.
JPA
JPA는 JAVA ORM(Object Relational Mapping) 기술에 대한 API 표준 명세이며 Spring Data JPA를 통해 사용한다.
DB 데이터와 Object와 매핑시킨다.
- 장점
1. MySQL, MS-SQL, Oracle등 RDB에 종속적이지 않다.
→ 각 DB별 특정 쿼리를 작성할 필요없다.
2. 쿼리를 직접 작성할 필요없고, 기본적인 CRUD을 제공하기 때문에 빠른 개발이 가능하다.
(SQL문) Select * From User where Email= "~" → (Repository) findByEmail("~");
3. 테이블이 변경되면 엔티티만 변경하면 되기 때문에 간편하게 수정을 할 수 있다.
- 단점
1. 이해해야할 기술 내용들이 많아 학습하는데 오래 걸린다.
2. 복잡한 쿼리문을 사용할 때 어려움이 있다.
→ JPQL, QueryDSL를 사용하면 직접 SQL문을 쓸 수 있다.
MyBatis
MyBatis는 SQL Mapper이고 SQL과 Object와 매핑을 시킨다.
- 장점
1. JPA와 다르게 쉽고 SQL문을 직접 쓰기 때문에 복잡한 쿼리문에 능하다.
- 단점
1. DB나 테이블이 변경되면 수정해야 하는 부분이 많다.
→ DB 변경 시 해당 DB에 맞는 로직으로 전체적인 수정이 필요하다.
2. JPA와 다르게 상당히 많은 파일들과 설계하는데 복잡하다.
3. 특정 데이터베이스에 종속되어 있다.
Mybatis과 JPA를 같은 로직으로 만들었을 때
기본 세팅으론 JPA가 엄청 간단했었고 Mybatis는 파일도 워낙 많고.. 그냥 모든게 복잡했다.
세팅 이후 JPA가 사용하기 편하고 프로젝트에서 작성 시간 효율이 뛰어났지만 어느부분에서 막히면 해결하는데 어려움이 있다. 특히 막히는 부분은 심화응용할 때 또 찾아보고 이해하고....!! 숙련하는데 오래걸린다. 이 부분에서는 확실히 Mybatis이 편했다.
하지만 JPA에서도 JPQL, QueryDSL로도 복잡한 쿼리를 지원하고 모든면이 우수하기 때문에 JPA를 우선으로 학습하는게 좋다고 본다!
'DATABASE' 카테고리의 다른 글
Oracle / 테이블 스페이스 생성, 계정 생성, 권한 부여하기 (0) | 2025.01.09 |
---|---|
Oracle / M칩 MAC OS 에 Oracle DB 설치하고 접속하기 (0) | 2025.01.08 |
MySQL / ERROR! The server quit without updating PID file. (0) | 2024.01.09 |
Oracle / ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired. (0) | 2023.06.08 |
Mybatis / 하나의 Mapper에 Namespace 여러개 선언? (0) | 2022.12.10 |
- Total
- Today
- Yesterday
- Docker
- Spring Artifact
- 리눅스 메모리 캐시
- Spring Group
- linux 포트중복
- Mybatis vs JPA
- vue npm
- colima docker
- aws spring boot
- SQL Mapper
- gitignore 적용오류
- colima
- aws
- aws git
- vue project
- gitignore 적용안됨
- git gitignore
- mybatis
- mysql oracle
- aws git pull
- Linux caches
- nginx
- oracle db
- docker --context
- docker 명령어
- 메모리 삭제
- Mapper namespcae
- aws build
- docker context
- spring boot sh파일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |