본문 바로가기
프레임워크/JPA

[JPA] 객체지향에서의 양방향 설정

by Yikanghee 2022. 3. 16.

양방향 매핑은 단순히 말해서 연결된 테이블에서 서로 매핑되는 것을 말한다

예를 들어 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

댓글