실전 예제
Entity

order와 delivery는 1:1, product과 category는 N:M이다.
ERD

member, order, delivery 관계에서 FK는 주 테이블인 orders에 넣는다. category와 item은 다대다 관계에서 중간 테이블을 둔다. 여기서는 연습용으로 @ManyToMany를 사용한다.
Entity 상세

category와 item은 다대다 관계이지만 중간 테이블을 만들지 않았다.
연관 관계 구현
@Entity
public class Delivery {
@Id
@GeneratedValue
private Long id;
private String city;
private String street;
private String zipcode;
private DeliveryStatus status;
@OneToOne(mappedBy = "delivery")
private Order order;
}
예제에서는 item과 category 사이에
@ManyToMany
를 썼지만 실전에서는 사용하지 않는다.중간 테이블을 이용해 일대다, 다대일로 풀어낸다.
실전에서는 중간 테이블이 단순하지 않기 때문이다.
필드를 추가할 수도 없고 엔티티와 테이블이 일치하지 않아 제약이 많다.
@JoinColumn

외래 키를 매핑할 때 사용한다.
외래 키가 참조하는 대상 테이블의 칼럼명이 다를 때는 referencedColumnName을 사용해 지정해준다.
@ManyToOne

fetch, cascade
추후 설명한다.
targetEntity
제네릭이 없던 시절에 사용하던 옵션이라 몰라도 된다.
@OneToMany

속성 설명에 다대일은 mappedBy가 없고 일대다는 있다.
즉, 다대일이 붙은 곳은 꼭 연관 관계의 주인이 되어야 한다는 뜻이다.
Last updated
Was this helpful?