엔티티 직접 사용

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;