5-1 용어

5-2 연관관계가 필요한 이유

@Entity
public class Member {
    @Id
    private Long id;

    @Column(name = "USERNAME")
    private String name;

    @Column(name = "TEAM_ID")
    private Long teamId;
}

@Entity
public class Team {
    @Id
    @GeneratedValue
    private Long id;
    private String name;
}
//조회
Member findMember = em.find(Member.class, member.getId());
//연관관계가 없음
Team findTeam = em.find(Team.class, team.getId());

5-3 단방향 연관관계

@Entity
public class Member {
    @Id
    private Long id;

    @Column(name = "USERNAME")
    private String name;

    private int age;

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
}
public class MainJPA {
    public static void main(String[] args) {
        //팀 저장
        Team team = new Team("TeamA");
        em.persist(team);

        //회원 저장
        Member member = new Member("member1", team); //단방향 연관관계 설정, 참조 저장
        em.persist(member);

        //조회
				Long id = member.getId();
        Member findMember = em.find(Member.class, id);

        //참조를 사용해서 연관관계 조회
        Team findTeam = findMember.getTeam();

        // 새로운 팀B
        Team teamB = new Team("TeamB");
        em.persist(teamB);

        // 회원1에 새로운 팀B 설정
        member.setTeam(teamB);
		}
}

5-4 양방향 연관관계

@Entity
public class Member {
    @Id
    private Long id;

    @Column(name = "USERNAME")
    private String name;
    private int age;

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

@Entity
public class Team {
    @Id
    @GeneratedValue
    private Long id;
    private String name;

    @OneToMany(mappedBy = "team")
    List<Member> members = new ArrayList<Member>();
}

5-5 연관관계의 주인과 mappedBy

@OneToMany(mappedBy = "team")