JPA 객체지향 쿼리 언어(JPQL) - 엔티티 직접 사용

2022. 7. 23. 22:41·공부/JPA
반응형

출처 : 자바 ORM 표준 JPA 프로그래밍 인프런 강의

 

JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다.

 

엔티티 직접 사용

기본 키 값

  • JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용
  • 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
  • 엔티티를 파라미터로 전달
String query = "select m From Member m where m = :member";
Member findMember = em.createQuery(query, Member.class)
        .setParameter("member", member)
        .getSingleResult();
  • 식별자를 직접 전달
String query = "select m From Member m where m.id = :memberId";
Member findMember = em.createQuery(query, Member.class)
        .setParameter("memberId", member.getId())
        .getSingleResult();
  • 실행된 SQL
Hibernate: 
    /* select
        m 
    From
        Member m 
    where
        m.id = :memberId */ select
            member0_.id as id1_0_,
            member0_.age as age2_0_,
            member0_.TEAM_ID as TEAM_ID5_0_,
            member0_.type as type3_0_,
            member0_.username as username4_0_ 
        from
            Member member0_ 
        where
            member0_.id=?

 

 

외래 키 값

String query = "select m From Member m where m.team = :team"; // m.team이 DB 입장에서는 외래키
List<Member> findMember = em.createQuery(query, Member.class)
        .setParameter("team", teamA)
        .getResultList();

for (Member mem : findMember) {
    System.out.println("mem = " + mem);
}
Hibernate: 
    /* select
        m 
    From
        Member m 
    where
        m.team = :team */ select
            member0_.id as id1_0_,
            member0_.age as age2_0_,
            member0_.TEAM_ID as TEAM_ID5_0_,
            member0_.type as type3_0_,
            member0_.username as username4_0_ 
        from
            Member member0_ 
        where
            member0_.TEAM_ID=?
mem = Member{id=3, username='회원1', age=0}
mem = Member{id=4, username='회원2', age=0}

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/JPA' 카테고리의 다른 글
  • JPA 객체지향 쿼리 언어(JPQL) - 벌크 연산
  • JPA 객체지향 쿼리 언어(JPQL) - Named 쿼리
  • JPA 객체지향 쿼리 언어(JPQL) - 다형성 쿼리
  • JPA 객체지향 쿼리 언어(JPQL) - 패치 조인(한계)
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringBoot를 이용한 RESTful Web Service 개발
    Spring
    알고리즘
    운영체제
    토비의스프링부트
    egov
    백준
    자바스크립트
    프론트엔드
    기출문제
    RESTful
    Java
    JPA
    스프링부트
    토이프로젝트
    IT
    전자정부프레임워크
    인프런
    QueryDSL
    에러해결
    방통대
    코딩테스트
    react
    넥사크로
    SQL
    MSA
    프로그래머스
    springboot
    개발자
    oracle
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
JPA 객체지향 쿼리 언어(JPQL) - 엔티티 직접 사용
상단으로

티스토리툴바