<aside> ✅ JPA : Java 오브젝트를 관계형 데이터베이스에 매핑하는 Java 표준으로 개발자가 데이터베이스에 데이터를 저장, 조회, 업데이트, 삭제하기 위해 SQL을 작성할 필요 없이, 객체를 조작하는 것 만으로 데이터베이스에 저장, 조회, 업데이트, 삭제를 수행할 수 있게 한다.
</aside>
JPA는 개발자가 직접 SQL문을 작성하지 않고도 데이터베이스의 데이터를 조작할 수 있는 장점이 있지만, 한계가 있다.
이런 한계가 있으므로 이를 보완할 대안들에 대해 조사해봤다.
🔹 SQL을 직접 사용할 수 있는 기능으로 JPA가 지원하고 있다.
🔹 장점
🔸 데이터베이스 종속 기능 사용 :
JPQL이 표준 SQL을 지원하는 대부분의 문법과 SQL 함수들을 지원하지만 특정 데이터베이스에 종속적인 기능은 지원하지 않는다. 따라서 특정 데이터베이스가 지원하는 기능을 사용하고자 할 때 사용한다. 하지만 이 때문에
🔸 성능 이슈 해결 :
JPA가 지원하는 메소드 중 update쿼리는 하나하나 조회하여 id 값을 가져와 처리하는 방식인데 이게 대량이 되면 속도 저하와 성능 이슈를 낳는다. 이럴 경우 조회 없이 한번의 쿼리로 하기 위해 native Query를 사용한다.
🔹 단점
🔸 특정 데이터베이스에 의존하는 SQL을 작성해야 한다. (데이터베이스가 변경되면 SQL도 수정) 다형성 🔽
🔸 개발자가 문자열로 SQL을 직접 정의해야 하여 개발자 의존적이라 휴먼 에러 발생 가능성이 높다.