본문 바로가기
[JAVA]/JPA

JPQL - 엔티티 직접 사용

by 황원용 2023. 5. 13.
728x90

엔티티 직접 사용

  • JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다.

 

 

엔티티 직접 사용 - 기본 키 값

-- JPQL
select count(m.id) from Member m -- 엔티티의 아이디를 사용
select count(m) from Member m -- 엔티티를 직접 사용 -> Member 엔티티의 기본 값인 id 값을 사용

-- SQL(위의 쿼리 둘 다 아래의 SQL이 실행된다.)
SELECT COUNT(m.id) AS cnt FROM Member m

 

엔티티를 파라미터로 전달

String jqpl = "select m from Member m where m = :member";
List resultList = em.createQuery(jpql)
					.setParameter("member", member)
                    .getResultList();

식별자를 직접 전달

String jqpl = "select m from Member m where m = :memberId";
List resultList = em.createQuery(jpql)
					.setParameter("member", member1.getId())
                    .getResultList();

실행된 SQL

select m.* from Member m where m.id=?

 

 

엔티티 직접 사용 - 외래 키 값

Team team = em.find(Team.class, 1L);

String qlString = "select m from Member m where m.team = :team";
List resultList = em.createQuery(qlString)
					.setParameter("team", team)
                    .getResultList();
String qlString = "select m from Member m where m.team.id = :teamId";
List resultList = em.createQuery(qlString)
					.setParameter("team", teamA)
                    .getResultList();

실행된 SQL

select m.* from Member m where m.team_id=?

 

 

 

참고

김영한 - 자바 ORM 표준 JPA 프로그래밍

728x90

'[JAVA] > JPA' 카테고리의 다른 글

JPQL - 벌크 연산  (1) 2023.05.14
JPQL - @NamedQuery 애너테이션  (0) 2023.05.13
JPQL - 다형성 쿼리  (0) 2023.05.13
JPQL - fetch join  (0) 2023.05.13
JPQL - 경로 표현식  (0) 2023.05.04