728x90
1. ENUM 타입 표현
ENUM 타입을 표현할 때 , '패키지명.ENUM클래스명.ENUM' 으로 표현한다.
MemberType에 ADMIN, USER가 있다.
MemberType이 ADMIN인 멤버를 조회해보자.
✅MemberType
public enum MemberType {
ADMIN,USER
}
✅ENUM 타입 표현(1)
String query = "select m.username from Member m " +
"where m.type = jpql.MemberType.ADMIN";
List<Object[]> result = em.createQuery(query, Object[].class)
.getResultList();
- jpql이라는 패키지에 MemberType 이라는 ENUM 클래스 안에 ADMIN이라고 지정해줘야한다.
✅ENUM 타입 표현(2)
String query = "select m.username from Member m " +
"where m.type = :userType";
List<Object[]> result = em.createQuery(query, Object[].class)
.setParameter("userType",MemberType.ADMIN)
.getResultList();
- 파라미터 바인딩을 하면 패키지명을 안써도 된다.
2. 상속관계 엔티티 타입 표현
상속관계에서 사용한다.
그림과 같이 Item 부모 클래스가 있고 Item을 상속받는 Book, Album, Movie 자식 클래스가 있다.
ITEM의 DTYPE으로 어떤 자식 클래스인지 구분할 수 있다.
✅JPQL
select i from Item i where type(i) = Book
- type(i) = Book 이렇게 표현하면 된다.
✅실행 SQL 쿼리
select
i1_0.ITEM_ID,
i1_0.DTYPE,
i1_0.name,
i1_0.price,
i1_0.artist,
i1_0.author,
i1_0.isbn,
i1_0.actor,
i1_0.director
from
Item i1_0
where
i1_0.DTYPE='Book'
단일 테이블 전략으로 설정했을 때, 이런 SQL 쿼리가 실행된다.
item의 DTYPE이 'Book' 이라는 조건이 실행되는 것이 포인트다.
JPA 기본 | 상속관계 매핑
1. 데이터베이스에 상속관계 표현하기 관계형 데이터베이스는 상속 관계 개념이 없다.Java 객체는 상속 관계 개념이 있다.부모 클래스는 독립적으로 인스턴스화 할 필요가 없다면, 추상클래스로
ururuwave.tistory.com
(상속관계 엔티티 타입표현을 보기전에 알아야 할 포스팅 첨부)
728x90
'인프런 김영한 강의 정리 > 자바 ORM 표준 JPA 프로그래밍 기본편' 카테고리의 다른 글
JPA 기본 | JPQL 문법(6) - 기본 함수 (0) | 2024.07.17 |
---|---|
JPA 기본 | JPQL 문법(5) - 조건식 (0) | 2024.07.17 |
JPA 기본 | JPQL 문법(3) - 페이징, 조인, 서브쿼리 (0) | 2024.07.17 |
JPA 기본 | JPQL 문법(2) - 프로젝션(SELECT) (0) | 2024.07.16 |
JPA 기본 | JPQL 기본 문법(1) 쿼리 API, 파라미터 바인딩 (0) | 2024.07.15 |