OneToMany
- ManyToOne
mappedBy
등등Enum
사용시 주의할점OneToOne
일 경우 FK 지정, 연관관계의 주인정하기 등을 알 수 있었다.예제에선 설명을 쉽게하고 단순하게 설계하기 위해 엔티티 클래스에 Getter, Setter를 모두 연다.
🔺 실무에서는 가급적 Getter는 열어두고, Setter는 꼭 필요한 경우에만 사용
이론적으론 Getter, Setter 모두 제공하지 않고 꼭 필요한 별도의 메서드를 제공하는게 이상적이다.
하지만, 실무에서 조회할 일이 많으므로 Getter는 모두 열어두는것이 편리.
(Getter는 아무리 호출해도 호출하는 것만으론 어떤 일이 발생하지 않음)
🔺 Setter는 막 열면 문제가 된다.
@Embedded
이나 @Embeddable
둘중 하나만 적어줘도 되지만 둘다 기술한다.private~~
을 작성 후 없으면 create해서 틀 생성.@OneToMany(mappedBy = "member")
: FK가 양방향일때 연관관계의 주인을 표시하기 위해 적음. member
는 order에 있는 컬럼이다.package jpabook.jpashop.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter @Setter
public class Member {
@Id @GeneratedValue
@Column(name = "member_id")
private Long id;
private String name;
@Embedded
private Address address;
private List<Order> orders = new ArrayList<>();
}
@Embeddable
어노테이션을 넣어준다.package jpabook.jpashop.domain;
import lombok.Getter;
import javax.persistence.Embeddable;
@Embeddable
@Getter
public class Address {
private String city;
private String street;
private String zipcode;
}
item.java에 @Inheritance
를 적어준다.
@Inheritance(strategy = InheritanceType.사용할전략)
@DiscriminatorColumn(name = "dtype")
과 @DiscriminatorValue("B")
를 사용.
@Enumerated(EnumType.ORDINAL)
을 기술해줘야한다.order 와 delivery 엮기
OneToOne
은 FK를 어디에든 둘 수 있다.➡️ 관련내용은 기본편 강의 참고.