1. 객체지향 쿼리 언어(JPQL)
1-1. JPA는 다양한 쿼리 방법을 지원한다.
- JPQL
- QueryDSL
----------------------------------------
- JPA Criteria -> 거의 사용 안함(유지보수가 너무 힘듬)
- 네이티브 SQL
- JDBC API 직접 사용
- MyBatis
- SpringJdbcTemplate
1-2. JPQL 소개
- 단순한 조회 : EntityManager.find();
-> 나이가 18살 이상인 회원을 모두 검색하고 싶다면?
1-3. JPQL이란
- JPA를 사용하면 엔티티 객체를 중심으로 개발
- 문제는 검색 쿼리
- 검색을 할때도 테이블이 아닌 엔티티 객체를 대상으로 검색
- 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능
- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공
- SQL 문법이 유사 -> select, from, where, group by, having, join 지원
- JPQL 엔티티 객체를 대상으로 쿼리 작성
- SQL은 데이터 베이스 테이블을 대상으로 쿼리 작성
- JPQL(Java Persistence Query Language)
- JPQL을 한마디로 정의하면 객체 지향 SQL문이다.
1-4. JPQL 문법
- 대소문자 구분
-> 엔티티와 속성은 대소문자 구분
-> JPQL 키워드는 구분하지 않는다.
- 엔티티 이름
-> 테이블명 대신 엔티티명을 사용
-> 클래스명 말고 특정 이름을 지정하고 싶을 때 : @Entity(name="...")
-> 지정하지 않을 시 클래스명을 기본 값으로 사용(추천)
- 별칭(알리아스)은 필수
-> JPQL은 별칭 필수
-> AS(알리아스)는 생략 가능 