1 분 소요

인프런 실전! Querydsl 강의 내용 정리

Member.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@Entity  
@Getter  
@Setter  
@NoArgsConstructor(access = AccessLevel.PROTECTED)  
@ToString(of = {"id", "username", "age"})  
public class Member {  
  
    @Id  
    @GeneratedValue    @Column(name = "member_id")  
    private Long id;  
    private String username;  
    private int age;  
  
    @ManyToOne(fetch = LAZY)  
    @JoinColumn(name = "team_id")  
    private Team team;  
  
    public Member(String username) {  
        this(username, 0);  
    }  
  
    public Member(String username, int age) {  
        this(username, age, null);  
    }  
  
    public Member(String username, int age, Team team) {  
        this.username = username;  
        this.age = age;  
        if (team != null)  
            changeTeam(team);  
    }  
  
    public void changeTeam(Team team) {  
        this.team = team;  
        team.getMembers().add(this);  
    }  
}

Team.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Entity  
@Getter @Setter  
@NoArgsConstructor(access = AccessLevel.PROTECTED)  
@ToString(of = {"id", "name"})  
public class Team {  
  
    @Id @GeneratedValue  
    @Column(name = "team_id")  
    private Long id;  
    private String name;  
  
    @OneToMany(mappedBy = "team")  
    List<Member> members = new ArrayList<>();  
  
    public Team(String name) {  
        this.name = name;  
    }  
}

다음과 같이 두 엔티티를 만들어 줬다.

이건 Spring Data Jpa 강의 에서도 사용한 모델과 같은 모델.

간단하게 테스트 해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@Test  
public void testEntity() throws Exception {  
    //given  
    Team teamA = new Team("teamA");  
    Team teamB = new Team("teamB");  
    em.persist(teamA);  
    em.persist(teamB);  
  
    Member member1 = new Member("member1", 10, teamA);  
    Member member2 = new Member("member2", 20, teamA);  
  
    Member member3 = new Member("member3", 30, teamB);  
    Member member4 = new Member("member4", 40, teamB);  
    em.persist(member1);  
    em.persist(member2);  
    em.persist(member3);  
    em.persist(member4);  
    em.flush();  
    em.clear();  
    //when  
    List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();  
    //then  
    for (Member member : members) {  
        System.out.println("member =  " + member);  
        System.out.println("member's Team = "+ member.getTeam());  
    }  
  
}

벌써부터 N+1 등 나오긴 했지만, 어쨌든 원하는 데이터가 잘 나왔다.

태그: ,

카테고리:

업데이트:

댓글남기기