Entity 직접 사용

  • JPQL에서 id 대신 Entity를 넣으면 SQL에서 자동으로 해당 Entity의 기본키를 사용한다.

기본키

public class JpaMain {

    public static void main(String[] args) {
        String jpql = "select m from Member m where m = :member";

        List resultList = em.createQuery(jpql)
                .setParameter("member", member).getResultList();
    }
}
  • Entity를 파라미터로 넘기는 방식

public class JpaMain {

    public static void main(String[] args) {
        String jpql = "select m from Member m where m.id = :memberId";

        List resultList = em.createQuery(jpql)
                .setParameter("memberId", memberId).getResultList();
    }
}
  • 식별자를 직접 전달하는 방식

select m.*
from Member m
where m.id = ?
  • 둘 다 같은 SQL을 실행한다.

외래키

public class JpaMain {

    public static void main(String[] args) {
        Team team = em.find(Team.class, 1L);
        // 엔티티를 파라미터로 바로 전달
        // 연관 관계 매핑 설정에서 적어둔 FK를 사용한다.
        String qlString = "select m from Member m where m.team = :team";

        List resultList = em.createQuery(qlString)
                .setParameter("team", team).getResultList();
    }
}
public class JpaMain {

    public static void main(String[] args) {
        // 키를 파라미터로 전달
        String qlString = "select m from Member m where m.team.id = :teamId";

        List resultList = em.createQuery(qlString)
                .setParameter("teamId", teamId).getResultList();
    }
}
select m.*
from Member m
where m.team_id = ?
  • 외래 키 역시 Entity를 사용할 수 있다.

Last updated