🟡 JPQL 이란 ?

2021. 7. 1. 10:35·개발중/Java Persistence API (JPA)
728x90
반응형

🟡 JPQL 이란 ?

JPQL 은 엔티티 객체를 조회하는 객체지향 쿼리이다.

 

문법은 SQL 과 비슷하고 ANSI 표준 SQL 이 지원하는 기능을 유사하게 지원한다.

JPQL 은 SQL 을 추상화 해서 특정 DB 에 의존하지 않는다.

 

그리고 DB 방언만 변경하면 JPQL을 수정하지 않아도 자연스럽게 데이터 베이스를 변경할 수 있다.

예를 들어 SQL 함수라도 DB 마다 사용문법이 다른 것이 있는데,

JPQL 이 제공하는 표준화된 함수를 사용하면 선택한 방언에 따라 해당 DB 에 맞춘 적절한 SQL 함수가 실행된다.

 

JPQL 은 SQL 보다 간결하다.


🟣 JPQL 특징

  • JPQL 은 객체지향 쿼리 언어이다. 따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리 한다.
  • JPQL 은 SQL 을 추상화 해서 특정 DB SQL 에 의존하지 않는다.
  • JPQL 는 결국 SQL 로 변환한다

🟣 JPQL 문법

  • 예약어는대소문자 구분 안해요
    • EX ) SELECT, FROM, AS ...
  • 엔티티 이름을 지정하지 않으면 클래스 명을 기본 값으로 설정해요
    • EX ) @Entity(name="XXX")
  • 별칭은 필수
    • EX ) Member AS m

🟣 회원 엔티티

 

@Entity(name="Member")

public class Member {

 

    @Colum ( name="Member" )

    private String username;

}


🟣 JPQL 사용

 

회원 이름이 'kim' 인 사람 조회

 

String jpql = "select m from Member as m where m.username = 'kim' ";

LIST<Member> resultList = em.createQuery( jpql, Member.class ).getResultList(); 


JPQL 에서 Member 은 엔티티 이름이다.

그리고 m.username 은 테이블 컬럼명이 아니라 엔티티 객체의 필드명이다.

 

em.createQuery() 메소드에 실행할 JPQL 과 엔티티 클래스 타입인 Member.class 를 넘겨주고

getResultList() 메소드를 실행하면 JPA 는 JPQL 을 SQL 로 변환해서 DB 를 조회한다.


 

728x90
반응형
저작자표시 (새창열림)

'개발중 > Java Persistence API (JPA)' 카테고리의 다른 글

🟡 Criteria이란 ?  (0) 2021.07.01
🟡 QueryDSL이란 ?  (0) 2021.07.01
객체 지향 쿼리 소개  (0) 2021.07.01
Java 객체/ 기본값 타입의 특징  (0) 2021.06.30
JPA - 값 타입 컬렉션  (0) 2021.06.30
'개발중/Java Persistence API (JPA)' 카테고리의 다른 글
  • 🟡 Criteria이란 ?
  • 🟡 QueryDSL이란 ?
  • 객체 지향 쿼리 소개
  • Java 객체/ 기본값 타입의 특징
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (949)
      • 개발중 (635)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (88)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (28)
        • 기록 (3)
        • 캐글 스터디 (3)
        • R (12)
        • MLOps (10)
      • 논문 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 마스터
    리눅스 마스터 1급 요약
    리눅스 마스터 요약
    REST API
    VUE
    docker
    파이썬
    쿠버네티스 스터디
    git
    Git 저장소
    jpa
    네트워크 관리사 자격증
    파이썬 알고리즘
    springboot
    Spring
    리눅스 마스터 1급
    네트워크 관리사 학점
    네트워크 관리사 실기
    BackendDevelopment
    쿠버네티스
    네트워크 관리사 2급
    redis
    알고리즘
    네트워크 관리사
    리눅스 1급 요약
    리눅스 마스터 1급 정리
    네트워크 관리사 요약
    스프링
    java
    네트워크 관리사 2급 실기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
🟡 JPQL 이란 ?
상단으로

티스토리툴바