본문 바로가기
👩‍💻TIL/DB

[DB] JPA와 mapper 방식 비교 및 장단점

by devuna 2021. 5. 8.
728x90

[DB] JPA와 mybatis, mapper 방식 비교 및 장단점

갈수록 JPA를 사용하는 곳이 늘어나고 있다. 최근에 진행한 프로젝트에서 jpa로 진행하는 경우가 많았는데,

사용할 수록 두 가지의 장단점이 뚜렷하여 mybatis를 사용한 mapper 방식과 여러가지로 비교가 될 수 밖에 없었다. 

간단히 정리해보자면, 다음과 같다.

 

장점 

💡 관리 및 유지보수가 쉽다 :  SQL 쿼리문을 직접적으로 작성하지 않고 객체를 바탕으로 데이터베이스를 동작시키므로 유지보수가 간결하다. 쿼리가 수정되면 그를 담을 DTO 필드에 모두 변경이 일어나야하지만 JPA는 엔티티 클래스 정보만 변경하면 쉽게 관리가 가능하다.

 

💡 생산성 향상 : 기존에는 개발자가 CRUD용 쿼리를 하나하나 작성해야 하며, DB에서 컬럼이 추가되면 수정해야하는 부분이 많았다. JPA를 사용하게 되면 기본적으로 제공되는 CRUD 관련 쿼리들이 있어, 자주 쓰이는 쿼리를 직접 생성하지 않아도 되며, 생성한 객체를 바탕으로 데이터베이스를 다루기 때문에 객체 중심으로 개발을 진행할 수 있다. 

 

💡 RDBMS 종류로부터 독립적이다 : 객체 중심으로 동작하기 때문에 Oracle,  Mssql, Mysql과 같이 서로 다른 데이터베이스를 사용하려고 할 때 문법을 걱정하지 않고 쉽게 사용이 가능하다.

 

 

단점

💡 복잡한 쿼리문 작성이 어렵다 : JPA는 통계처리와 같이 복잡한 쿼리보다는 실시간 처리용 쿼리에 더 최적화되어 있다. JPA에서 제공하는 Native query기능을 사용할 수 있지만 복잡하고 미세하게 쿼리 작업이 필요하다면 Mybatis와 같은 Mapper 방식을 사용하는 것이 더 효율적일 수 있다.

 

💡 학습곡선이 높다 : 사용이 익숙하지 않은 초기학습에 시간이 꽤 소요될 수 있다.

 

💡 성능 최적화 필요 : 자동 생성되는 쿼리문이 많아 성능 저하의 가능성이 있으며, 최적화가 필요할 수 있다. 

 

 

 

 

728x90

댓글