Spring
[TIL] 240409 Entity 연간 관계 | 1:1 매핑, 단방향, 양방향
studymode
2024. 4. 9. 22:46
1:N에서는 외래키의 주인은 N쪽에 있음
1:1관계에서는 지정해줘야함 (외래키를 가지고 있는 쪽이 주인)
외래키의 주인
외래키를 등록, 삭제, 수정 가능
외래키의 주인이 아니면 읽기만 가능
1:1관계 (단반향)

🔽 음식 (외래키의 주인)
@Entity
@Table(name = "food")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
}
🔽 고객
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
1:1 양방향의 경우
🚨주의! 외래키의 주인이 아닌쪽에서 지정!!
아닌 쪽에서 mapped by = 외래케의 주인이 갖고있는 외래키 필드명

🔽 음식 (외래키의 주인)
@Entity
@Table(name = "food")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
}
🔽 고객
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne(mappedBy = "user")
private Food food;
}
🚨주의! 외래키의 주인이 아닌쪽에서 지정!!
아닌 쪽에서 mapped by = 외래케의 주인이 갖고있는 외래키 필드명
mappedBy로 외래키의 주인을 알려주지않으면
Jpa에서는 임의로 중간테이블을 생성하게 되기때문에
꼭 mappedBy로 외래키의 주인 명시하기!!