JPA 사용 시 장점
- 특정 데이터베이스에 종속되지 않음
애플리케이션 개발을 위해 데이터베이스로 오라클(Oracle)을 사용하여 개발을 진행했다고 가정해보겠다. 만약 오라클을 오픈소스인 MariaDB로 변경한다면 데이터베이스마다 쿼리문이 다르기 때문에 전체를 수정해야 한다. 따라서 처음 선택한 데이터베이스를 변경하기 어렵다. 하지만 JPA는 추상화한 데이터 접근 계층을 제공한다. 설정 파일에 어떤 데이터베이스를 사용하는지 알려주면 얼마든지 데이터베이스를 변경할 수 있다.
- 객체지향적 프로그래밍
JPA를 사용하면 데이터베이스 설꼐 중심의 패러다임에서 객체지향적으로 설계가 가능하다. 이를 통해 좀 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와준다.
- 생산성 향상
데이터베이스 테이블에 새로운 컬럼이 추가되었을 경우, 해당 테이블의 컬럼을 사용하는 DTO 클래스의 필드도 모두 변경해야 한다. JPA에서는 테이블과 매핑된 클래스에 필드만 추가한다면 쉽게 관리가 가능하다. 또한 SQL문을 직접 작성하지 않고 객체를 사용하여 동작하기 때문에 유지보수 측면에서 좋고 재사용성도 증가한다.
JPA 사용 시 단점
- 복잡한 쿼리 처리
통계 처리 같은 복잡한 쿼리를 사용할 경우는 SQL문을 사용하는 게 나을 수도 있다. JPA에서는 Native SQL을 통해 기존의 SQL문을 사용할 수 있지만 그러면 특정 데이터베이스에 종속된다는 단점이 생긴다. 이를 보완하기 위해서는 SQL과 유사한 기술인 JPQL을 지원한다.
- 성능 저하 위험
객체 간의 매핑 설계를 잠롯했을 때 성능 저하가 발생할 수 있으며, 자동으로 생성되는 쿼리가 많기 때문에 개발자가 의도하지 않는 쿼리로 인해 성능이 저하되기도 한다.
- 학습 시간
JPA를 제대로 사용하려면 알아야 할 것이 많아서 학습하는 데 시간이 오래 걸린다.