양방향 매핑은 단순히 말해서 연결된 테이블에서 서로 매핑되는 것을 말한다
예를 들어 Member -> Team , Team -> Member 가 되는 것이다
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
private int age;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
위와 같이 Member 객체를 설정해주고 아래와 같이 Team 객체를 만들어준다
@Entity
public class Team {
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "team")
List<Member> members = new ArrayList<Member>();
…
}
양방향 연관관계를 사용할때에는 객체의 두 관계중 하나를 연관관계의 주인으로 지정해준다
연관관계의 주인이 아닌쪽은 읽기만 가능하고, 주인만이 외래 키를 관리 (등록, 수정) 할 수 있음
주인은 mappedBy 를 사용 안하고 주인이 아니면 mappedBY로 주인을 지정한다
members 리스트는 원래 있는 객체가 아니고 Team에서 Member를 접근하기 위한 수단이다
양방향 매핑시 mappedBy로 주인에 값을 입력해야한다
Team team = new Team();
team.setName("TeamA");
em.persist(team);
Member member = new Member();
member.setName("member1");
team.getMembers().add(member);
//연관관계의 주인에 값 설정
member.setTeam(team); //**
em.persist(member);
연관관계의 주인을 설정할때 주인은 외래 키의 위치를 기준으로 정해야함
'프레임워크 > JPA' 카테고리의 다른 글
[JPA] 일대일 [1:1] 연관관계 매핑 (0) | 2022.03.21 |
---|---|
[JPA] 일대다( 1:N) 연관관계 (0) | 2022.03.17 |
[JPA] 객체지향에서의 단방향 설정 (0) | 2022.03.16 |
[JPA] 엔티티와 매핑 (0) | 2022.03.14 |
[JPA] 필드와 컬럼 매핑 (0) | 2022.03.14 |
댓글