5.3 양방향 연관관계

팀에서 회원으로 접근하는 관계.
회원에서 팀으로 접근 가능하고, 팀에서 회원 접근 가능한 양방향.

5.3.1 양방향 연관관계 매핑

회원 엔티티

변경되는 부분 없음

@Entity
public class Member {

    @Id
    @Column(name = "MEMBER_ID")
    private String id;

    private String username;

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;

    //연관관계 설정
    public void setTeam(Team team) {
        this.team = team;
    }

    //Getter, Setter
}

매핑한 팀 엔티티

@Entity
public class Team {

    @Id
    @Column(name = "TEAM_ID")
    private String id;

    private String name;

    //추가
    @OneToMany(mappedBy = "team")
    private List<Member> members = new ArrayList<Member>();

    // Getter, Setter ...
}

일대다 관계는 컬렉션인 List<Member> members를 추가

mappedBy 속성은 양방향 매핑일 때 사용한다.
반대쪽 매핑의 필드 이름을 값으로 주면 된다.
반대쪽 매핑이 Member.team이므로 team을 값으로 준다.

5.3.2 일대다 컬렉션 조회

public void biDirection() {

    Team team = em.find(Team.class, "team1");
    List<Member> members = team.getMembers();   // 팀 -> 회원, 객체그래프 탐색

    for (Member member : members) {
        System.out.println("member.username = " + 
                member.getUsername());
    }
}

//결과
//member.username = 회원1
//member.username = 회원2
}

results matching ""

    No results matching ""