JPA는 ORM을 위해서 자바에서 제공하는 API입니다.
자바 객체와 DB테이블을 매핑하게되고, 구현체로는 하이버네이트가 있습니다.
장점 - 이미 만들어져있는 API를 가져다가 구현해서 사용하므로 생산성이 증가하고 유지보수가 쉽고 DB의존도가 낮아집니다.
단점 - 성능이 조금 떨어지고, 복잡한 쿼리문들은 하이버네이트로 구현하기 어렵다.
비지니스 로직에 집중하고 객체중심의 개발을 할 수있게 됩니다.
그리고 메소드를 호출하는 것만으로 쿼리를 수행해서 생산성이 향상되고, 유지 보수 비용이 줄어듭니다. 그리고 특정 데이터베이스에 의존하지 않게 됩니다.
하지만 단점으로는 직접 SQL을 호출하는것보다는 조금 느리고 복잡한 쿼리같은것은 메소드로 처리하기 힘들다는 단점이있습니다.