- 기본 데이터 입력
Team team1 = new Team();
team1.setName("팀A");
em.persist(team1);
Team team2 = new Team();
team2.setName("팀B");
em.persist(team2);
Member member1 = new Member();
member1.setUsername("회원1");
member1.setTeam(team1);
em.persist(member1);
Member member2 = new Member();
member2.setUsername("회원2");
member2.setTeam(team1);
em.persist(member2);
Member member3 = new Member();
member3.setUsername("회원2");
member3.setTeam(team2);
em.persist(member3);
em.flush();
em.clear();
- DB에 데이터를 위와 같이 저장한다.
- 엔티티 직접 사용 - 기본 키 값
// 1. String query = "select t From Team t join t.members";
// 2. String query = "select t From Team t join fetch t.members";
// 3. String query = "select distinct t From Team t join fetch t.members";
List<Team> result = em.createQuery(query, Team.class)
.getResultList();
System.out.println("result.size() = " + result.size());
for (Team team : result) {
System.out.println("team = " + team.getName() + "| members = " + team.getMembers().size());
for (Member member : team.getMembers()) {
System.out.println("-> member = " + member);
}
}
- 위의 1(일반 조인 - 연관된 엔티티 조회하지 않음), 2(페치 조인 - 연관된 엔티티까지 조회) ,3(DISTINCT - 동일 엔티티(중복) 자동 삭제) 은 이전에 계속해서 사용하던 JPQL이다.
- 엔티티를 파라미터로 전달
String query = "select m from Member m where m = :member";
Member findMember = em.createQuery(query, Member.class)
.setParameter("member", member1)
.getSingleResult();
System.out.println("findMember = " + findMember);
- :member의 위치에 member1 엔티티를 넣어서 조회한다.
- 식별자를 직접 전달
String query = "select m from Member m where m.id = :memberId";
Member findMember = em.createQuery(query, Member.class)
.setParameter("memberId", member1.getId())
.getSingleResult();
System.out.println("findMember = " + findMember);
- 엔티티의 식별자를 이용하여 조건으로 데이터를 조회하는 방식으 사용한 방법이다.
- 엔티티 직접 사용 - 외래 키 값
String query = "select m from Member m where m.team = :team";
List<Member> members = em.createQuery(query, Member.class)
.setParameter("team", team1)
.getResultList();
for (Member member : members) {
System.out.println("member = " + member);
}
- where의 조건으로 member엔티티가 아닌 외래키로 연관되어 있는 team을 전달하여 조회하는 방식이다.
출처 : 인프런 - 김영한 (자바 ORM 표준 JPA 프로그래밍 - 기본편)
728x90
'Programming > JPA' 카테고리의 다른 글
JPA - API 개발 기본 (0) | 2023.07.19 |
---|---|
JPA - 벌크 연산 (0) | 2023.07.19 |
JPA - 페치 조인 (2) (0) | 2023.07.19 |
JPA - 페치 조인 (1) (0) | 2023.07.19 |
JPA - 경로 표현식 (0) | 2023.07.18 |