Programming/JPA(KYH)

JPA - 엔티티 직접 사용

잇(IT) 2023. 7. 19. 17:25

- 기본 데이터 입력

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(KYH)' 카테고리의 다른 글

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