인프런 (자바 ORM 표준 JPA 프로그래밍 - 기본편, 김영한) 강의를 듣고 정리한 내용입니다
Member : id, name ...
Order : id, member_id(FK), ...
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
...}
@Entity
@Table(name = "ORDERS")
public class Order {
@Id @GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "memberId", insertable = false, updatable = false)
private Member member;
...}
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
// 연관관계 추가
@OneToMany(mappedBy = "member")
private List<Order> Orders = new ArrayList<Member>();
...}
@Entity
@Table(name = "ORDERS")
public class Order {
@Id @GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name = "memberId", insertable = false, updatable = false)
private Member member;
...}
*주의 1 : 순수 객체 상태를 고려해서 항상 양쪽에서 값을 설정하도록 해야 함
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "member")
private List<Order> Orders = new ArrayList<Member>();
public void setOrder(Order order){
order.setMember(this); //연관관계 주인에게 값 설정
this.orders.add(order); //주인이 아닌 객체도 값 설정
}
...
}
*주의 2 : 양방향 매핑시에 무한 루프를 조심 (toString(), lombok 등)
Member 의 toString() -> Order 의 toString() -> Member 의 toString() ... 무한루프 발생
@Override
public String toString(){
return "Member [ id= " +id+" , orders= "+orders ...;
}
@Override
public String toString(){
return "Order [ id= " +id+" , members= "+members ...;
}