Everything counts - 라키의 IT 블로그

[JPA] mybatis 에서 JPA로 옮겨 갈 시간인가? 본문

프로그래밍/DB

[JPA] mybatis 에서 JPA로 옮겨 갈 시간인가?

벡스파 2022. 4. 6. 01:53

Persistence Framework

JDBC 프로그래밍의 복잡함이나 번거로움이 없이 간단하게 데이터베이스와 연동할 수 있는 프레임워크. SQL Mapper과 ORM으로 나누어진다. (JPA, Hibernate,Mybatis etc..) 모두 JDBC API를 사용하도록 설계되어있으며 다만 개발자가 편하게 수행할 수 있도록 도움을 준다.

영속성(Persistence)이란?

 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성. 



SQL-Mapper란?

객체(Object)와 SQL 필드를 연결해 DB와의 연결을 처리하는 방식. 예로는 우리나라에서 많이 사용하는 mybatis가 있다.

장점 :
개발자가 sql을 잘 안다면 기술적 장벽, 난이도가 낮다
sql을 직접 작성하므로 최적화된 쿼리를 작성할 수 있다.
엔티티에 종속되지 않고 여러 테이블을 조합할 수 있다

단점 :
스키마 변경시 dto와 쿼리 등등 변경할게 많아서 상대적으로 작업량이 많아진다.
런타임시에 오류를 확인할 수 있다.
데이터베이스에 종속적이어서 데이터베이스 변경시 쿼리를 수정해야한다.
반복된 쿼리가 있어 반복작업이 생길 수 있다.

Mybatis

JDBC를 더 쉽게 도와주는 프레임워크로, SQL문을 코드로부터 분리해 코드가 짧아지고 유지보수성이 좋아진다.

참고 : https://github.com/100race/TIL/blob/main/MyBatis/MyBatis.md

 

GitHub - 100race/TIL: Today I Learned ~ 오늘 학습한 내용, 새롭게 알게된 내용 정리하기 ~

Today I Learned ~ 오늘 학습한 내용, 새롭게 알게된 내용 정리하기 ~. Contribute to 100race/TIL development by creating an account on GitHub.

github.com

 

ORM이란?

자바 객체(Object)와 DB객체를 매핑하여 관계를 처리하는 방식. SQL을 자동으로 생성해준다.
통계성 데이터보다는 실시간 데이터 등에 적합하다. JPA를 구현한 방식에는 Hibernate등이 있다.

장점 :
엔티티로 관리되므로 스키마 변경시 엔티티만 변경하면 쿼리는 자동적으로 변경된다.
객체지향적으로 데이터 연결을 관리할 수 있다
컴파일타임에 오류를 확인할 수 있다.
코드레벨로 관리되어 생산성이 높고 수정이 용이하다.
DBMS에 종속적이지 않다

단점 :
복잡한 연산을 수행하는데 어렵다.
고도화 될수록 기술력이 더 필요하다. 초기에는 생산성이 좋지만 성능이슈를 해결하려면 깊은 이해도가 필요.

JPA(Java Persistent API)

자바 ORM 기술에 대한 API 표준 명세로 Java에서 제공하는 API. 개발자는 JPA 구현체를 선택해 사용할 수 있다. 대표적 구현체로는 Hibernate가 있다.

 

mybatis vs JPA

5년간의 JPA, mybatis 전세계 구글트렌드
5년간의 JPA, mybatis 국내 구글트렌드

구글 트렌드를 보면 외국에서는 JPA가 압도적으로 많이 사용된다. 한국에서는 원래 mybatis를 주로 사용하다가 몇년 사이 JPA를 점점 많이 사용하는 추세.

 

 

느낀점

웹개발을 처음 접할 때 mybatis로 개발했다. 그래서 mybatis 기술 하에서는 SQL을 많이 사용하고 이로 인해 백엔드 개발자라면 sql을 잘 다룰줄 알아야지 하고 당연히 생각했는데 요즘은 생산성이나 여러 면에서 장점을 가진 JPA를 많이 사용하니, JPA에 대해 공부해서 JPA와 복잡한 연산에서는 sql mapping을 동시에 사용하는 방식으로 개발해봐야겠다.

 

References