단방향 연관 관계

  • 객체 지향적으로 모델링을 하면 Member에는 teamId가 아니라 Team 참조값을 그대로 갖게 된다.

@Entity
public class Member {

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

    // 이제 FK 대신 객체를 참조하기 위해 삭제한다.
    //  @Column(name = "TEAM_ID")
    //  private Long teamId;

    // 하나의 팀에 여러 멤버가 소속될 수 있으므로
    // Member 입장에서는 many, Team 입장에서는 one
    @ManyToOne
    // join 하기 위한 FK를 명시해준다.
    @JoinColumn(name = "TEAM_ID")
    private Team team;
}

@Entity
public class Team {

    @Id
    @GeneratedValue
    private Long id;

    private String name;
}
  • FK 대신 객체를 참조하면서 연관 관계가 매핑되었다.

연관 관계 수정

public class JpaMain() {

    public static void main(String[] args) {
        
        ...

        // 만약 다른 팀으로 바꾸고 싶다면
        Team teamB = new Team();
        teamB.setName("TeamB");

        em.persist(teamB);

        // 그냥 다시 새로운 팀으로 넣어주면 된다.
        member.setTeam(teamB);

        // 그냥 값만 바꾸면 변경 감지해서 update 쿼리가 나간다.
    }
}
  • 연관 관계를 수정할 때는 그냥 값만 바꿔 넣어주면 알아서 update 쿼리가 나간다.

Last updated