JPQL (Java Persistence Query Language)은 뜻을 해석하면 독립적인 객체 지향 언어라는 뜻이다
JPA를 사용할 때에 개발자는 엔티티 객체를 중심으로 개발하고 데이터베이스에 대한 처리는 JPA가 대신해주게 되는데
이때, 등록, 수정, 삭제, 한건 조회는 SQL를 전혀 사용하지 않지만, 검색할 때에는 SQL 쿼리를 작성해야 한다
여기서 문제가 발생한다.
JPA는 엔티티 객체를 중심으로 개발을 하여 검색할 때에 테이블이 아닌 엔티티 중심으로 검색을 해야 하는데
엔티티 대상으로 검색을 하려면 데이터를 애플리케이션으로 불러와서 엔티티 객체로 변경한 뒤 다시 검색해야 한다
로직이 상당히 어렵다
이걸 해결할 수 있는 방안이 JPQL이라는 쿼리 언어이다
JPQL은 다음과 같이 동작한다
String jpql = "select m from Member as where m.username = 'kim'";
List<Member> resultList = em.createQuery(jpql, Member.class).getResultList();
JPQL Member는 엔티티 이름이고. m.username은 테이블 칼럼명이 아니라 엔티티 객체의 필드명이다
em.createQuery() 메서드에 실행할 JQPL 코드와 반환할 엔티티의 클래스 타입을 넘겨준 뒤 getResultList를 실행해주면
JPA는 JPQL을 SQL로 변환하여 데이터베이스를 조회한다
'프레임워크 > JPA' 카테고리의 다른 글
[JPA] 객체지향에서의 단방향 설정 (0) | 2022.03.16 |
---|---|
[JPA] 엔티티와 매핑 (0) | 2022.03.14 |
[JPA] 필드와 컬럼 매핑 (0) | 2022.03.14 |
[JPA] JPA 영속성 컨텍스트 (0) | 2022.02.23 |
[JPA] JPA CRUD 기본 동작 (0) | 2022.02.23 |
댓글