반응형
장점
관리 및 유지보수 용이
@Entity 클래스에 쿼리에 필요한 테이블 컬럼을 작성하여 실행하면 테이블을 생성 및 업데이트할 수 있다. SQL문을 직접적으로 작성하지 않고 객체를 바탕으로 데이터베이스를 동작시키므로 유지보수가 간결하다.
생산성 향상
JPA를 사용하게 되면 기본적으로 제공되는 CRUD 관련 쿼리들이 있어, 자주 쓰이는 쿼리를 직접 작성하지 않아도 되며, 생성한 객체를 바탕으로 데이터베이스를 다루기 때문에 객체 중심으로 개발할 수 있다.
RDBMS 종류에 독립적
MySQL, Oracle, PostgreSQL과 같이 서로 다른 데이터베이스를 사용하려고 할 때 쿼리 문법이 달라도 JPA 문법으로 통합하여 사용할 수 있다. 객체 중심으로 동작하기 때문이다.
단점
복잡한 쿼리문 작성 어려움
JPA는 통계처리와 같이 복잡한 쿼리보다는 데이터 CRUD와 같이 간단한 쿼리에 더 최적화되어 있다. JPA에서 제공하는 @Query 태그를 사용하여 Native Query를 작성할 수도 있지만, 복잡하고 미세한 쿼리 작업이 많다면 Mybatis와 같은 Mapper 방식을 사용하는 것이 더 효율적일 수 있다.
높은 학습곡선
SQL문을 작성하지 않고 JPA만의 새로운 문법을 사용해야 하기 때문에 초기학습에 시간이 꽤 소요될 수 있다.
성능 최적화 필요
자동 생성되는 쿼리문이 많아 성능 저하의 가능성이 있으며, 최적화가 필요할 수 있다.
ref.
반응형