관리 메뉴

JIE0025

[JPA] 카테고리 Entity DB 반영 체크 본문

백엔드/테스트

[JPA] 카테고리 Entity DB 반영 체크

Kangjieun11 2022. 12. 17. 02:23
728x90

 

Application.yml에  해당 내용을 적어줬었다. 

name 과 password도 아래 더 내용이 있지만 생략했다.

 

엔티티를 아래와 같이 만들어주었었다.

package com.FlagHome.backend.v1.category.entity;

import lombok.*;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;


@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column
    private String name;

    @Column(name = "category_depth")
    private int categoryDepth;

    @ManyToOne(fetch = FetchType.LAZY)  //지연로딩, Category 조회할 때 부모도 함께 조회할 필요는 없고, 해당 카테고리의 자식들은 필요함.
    @JoinColumn(name="parent")
    private Category parent;
    //cateorgy : parent = n : 1
    //외래키가 존재하는 곳이 곧 '연관관계의 주인'이다.
    //name 속성은 말 그래도 Team 엔티티에 존재하는 member 라는 필드를 어떤 이름으로 Team 테이블에 컬럼명으로 설정할 것인지를 나타내주는 것이다.


    //지연로딩할 필요는 없을듯
    @OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE) //부모가 삭제되면 자식도 삭제되어야함.
    private List<Category> children = new ArrayList<>();
    //하위 메뉴를 가져오기 위한 1:n


    public void setName(String name) {
        this.name = name;
    }

    public void setChildren(List<Category> children ) {
        this.children = children;
    }

    @Builder
    public Category(Long id, String name, Category parent, int categoryDepth, List<Category> children) {
        this.id = id;
        this.name = name;
        this.parent = parent;
        this.categoryDepth = categoryDepth;
        this.children = children;
    }
}

 

 

먼저 서버를 틀어주고,

 

 

 

 

 

 

 

일단 동작을 시켜봤는데 디비엔 반영이 되었다. 

 

DB엔 반영 잘 됨!

 

 

MySQL Workbench에도 잘 반영되어 있는것을 확인할 수 있다.