JPA | 1 : N 양뱡향성 매핑

DoItDev·2021년 4월 22일
0
post-thumbnail

🧒 들어가기 앞서서

우리가 JPA 를 사용을 하다보면 단순한 매핑이 아니라
여러가지 다대다 매핑 이라던지 아니면 일대일 매핑을 하기 위해서
복잡한 관계를 맺기 시작한다

이번에 알아보는 것은 1 : N 매핑 관계이다

1 : N Mapping

Jpa Entity 를 만들다 보면 하나의 엔티티만 만드는게 아니다
연관관계의 맺는 부분이 있을 것이다
아래의 형태로 매핑할 것이다

1

부모 엔티티

@Getter
@Entity
@Table(name = "CATEGORY")
@NoArgsConstructor
public class Category extends BaseEntity{
 
    private String title;
 
    @OrderBy("createDate asc , title desc ")
    @OneToMany(mappedBy = "category")
    private List<Post> posts;
 
    @Builder
    public Category(String title, List<Post> posts) {
        this.title = title;
        this.posts = posts;
    }
 
}

@OrderBy 의 경우 엔티티 안에서 불러올 때 따로 order by 절을 작성해주는 어노테이션이다.
@OneToMany 의 경우 1 : N 메핑을 하기 위해서 사용을 한다.
@OneToMany 속성중 mappedBy 는 메핑된 변수 명을 작성을 해준다.

자식 엔티티

@Getter
@Entity
@Table(name = "Post")
@NoArgsConstructor
public class Post extends BaseEntity {
 
    private String title;
 
    private String content;
 
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "category_id")
    private Category category;
 
    @Builder
    public Post(String title, String content, Category category) {
        this.title = title;
        this.content = content;
        this.category = category;
    }
 
}

@JsonIgnore 의 경우 양뱡향성 작성시 무한으로 loop 되는 것을 막아준다
@ManyToOne 의 경우 자식 입장의 N : 1 메핑을 해준다.
@JoinColumn 의 경우 메핑될 컬럼 명을 작성해준다.

2

실제 쿼리를 날렸을 시 위와 같이 날라간다.

profile
Back-End Engineer

0개의 댓글