Mybatis란?
자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크입니다.
JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다.
또한 Java코드와 SQL코드를 분리하여 서로 다른 역할에 집중할 수 있게 합니다.
MyBatis는 DAO(Data Access Object)인터페이스를 통해 SQL과 연결 후 VO(Value Object) 또는 DTO(Data Transfer Object)로 바로 데이터를 가져옵니다.
JPA란?
JPA(Java Persistence API)는 ORM(Object-Relational Mapping) 기술 표준으로 JPA가 제공하는 API를 사용하면 직접적으로 SQL을 사용하지 않고도 DB에 접근이 가능합니다.
JPA는 반복적인 CRUD 작업을 이미 인터페이스에서 제공하고 있습니다. JPA를 제대로 사용하기 위해서는 약간의 러닝커브가 존재하지만 익숙해지면 빠른 개발과 유지보수 측면에서 효율적입니다.
JPA는 Entity와 DTO(Data Transper Object)를 구분지어서 정의하는 것이 좋습니다. 컨트롤러에서는 DTO를 통해 유효성검사 및 FrontEnd와의 연결을 책임지며, DB와 관련된 것은 Entity로 제어 하는거죠. 이러한 Object Mapping은 직접 함수를 만들거나 라이브러리를 이용해도 됩니다.
자주 사용하는 라이브러리는 Model Mapper 와 Map Struct 가 대표적이며, 성능 이슈 가 적은 Map Struct 사용을 추천합니다.
일반적으로 JPA는 Spring Data JPA와 Querydsl 조합을 많이 사용합니다.
Mabatis or JPA
그렇지만 현재의 구글 트렌드를 검색해보면 전세계적으로는 압도적으로 JPA가 우위에 있으며 우리나라의 경우는 비슷한 정도로 나타납니다.
JPA와 MyBatis와의 차이점이라면 DB를 바라보는 관점이 다른 것 같습니다.
서로의 장단점이 있기 때문에 프로젝트의 성격과 적합도에 맞게 선택하는 것이 좋을 것 같습니다.
JPA가 조금 더 공부해야 할 것이 많긴 하지만 잘 이해하고 사용하면 유지보수하기 좋을 것 같다 생각합니다.😓