엔티티 직접 사용
1. 기본 키 값
JPA에서 엔티티를 직접 이용하게 되면 엔티티의 기본 키 값을 이용한 것과 동일하게 된다.
[JPQL]
select count(m.id) from Member m //엔티티의 아이디를 사용
select count(m) from Member m //엔티티를 직접 사용
[SQL](JPQL 둘다 같은 다음 SQL 실행)
select count(m.id) as cnt from Member m
엔티티를 직접 사용한 것이나 id를 사용한 것이나 동일한 쿼리가 나간다.
String jpql = “select m from Member m where m = :member”; List resultList = em.createQuery(jpql)
.setParameter("member", member) .getResultList();
String jpql = “select m from Member m where m.id = :memberId”; List resultList = em.createQuery(jpql)
.setParameter("memberId", memberId) .getResultList();
이 또한 마찬가지이다.
2. 외래 키 값
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("teamId", teamId) .getResultList();
이 또한 id를 이용해서 조회하는 아래의 쿼리가 나간다.
select m.* from Member m where m.team_id=1;