
정의와 목적
SQL
RDBMS에서 데이터의 CRUD 작업을 위한 표준 질의 언어이다.
JPQL
JPA의 일부로써 객체 지향 쿼리 언어이다.
엔터티 객체를 대상으로 질의를 수행한다.
대상
SQL
데이터베이스의 테이블과 칼럼을 질의 대상으로 한다.
JPQL
애플리케이션의 엔터티와 그 속성을 질의 대상으로 한다.
특성
SQL
RDBMS마다 문법이나 기능의 차이가 있을 수 있어 플랫폼 의존적입이다.
JPQL
JPA 구현체에 의해 SQL로 변환되어 실행되므로 플랫폼 독립적이다.
사용 예시
SQL
SELECT name, age FROM user_table WHERE age > 20;
JPQL
SELECT u.name, u.age FROM User u WHERE u.age > 20
동적 쿼리 작성
매개변수를 활용하면 쿼리 문자열의 조건절이나 데이터를 동적으로 변경할 수 있다.
SQL Injection 방어
사용자 입력값을 안전하게 처리하여 SQL Injection 공격을 방지한다.
코드의 가독성
매개변수의 이름을 통해 쿼리의 목적이나 의미를 명확하게 파악할 수 있다.
재사용성
동일한 쿼리 구조에서 다양한 데이터를 조회하려면 매개변수 값을 변경하기만 하면 된다.