🔗 양방향 연관관계

회원에서 팀으로 접근하고, 팀에서 회원으로 접근할 수 있도록 양방향 연관관계로 매핑

회원과 팀은 다대일 관계이고, 팀에서 회원은 일대다 관계다.

일대다 관계는 여러 건과 연관관계를 맺을 수 있으므로 컬렉션을 사용해야 한다.

Team.membersList 컬렉션으로 추가했다.

JPA는 List를 포함해서 Collection, Set, Map 같은 다양한 컬렉션을 지원한다.(14.1)

데이터베이스 테이블은 외래키 하나로 양방향으로 조회할 수 있기 때문에 데이터베이스에 추가할 내용은 없다.

1. 양방향 연관관계 매핑

//회원 엔티티는 변경할 부분X//팀 엔티티@Data@Entitypublic class Team{    @Id    @Column(name="TEAM_ID")    private String id;    private String name;    //추가    @OneToMany(mappedBy = "team") //Member클래스의 필드 이름    private List<Member> members = new ArrayList<Member>();}

팀과 회원은 일대다 관계이기 때문에 팀 엔티티에 LIst<Member> members를 추가했다.

일대다 관계를 매핑하기 위해 @OneToMany 매핑 정보를 사용했다.

mappedBy 속성은 양방향 매핑일 때 사용하는데, 반대쪽 매핑의 필드 이름을 값으로 주면 된다.

이제 회원 컬렉션으로 객체 그래프를 탐색할 수 있다.

2. 일대다 컬렉션 조회

//일대다 방향으로 객체 그래프 탐색public void biDirection(){    Team team = em.find(Team.class, "team1");    List<Member> members = team.getMembers();//팀 -> 회원}