Application/Test
[JPA] 카테고리 Entity DB 반영 체크
sdoaolo
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;
}
}
먼저 서버를 틀어주고,
일단 동작을 시켜봤는데 디비엔 반영이 되었다.
MySQL Workbench에도 잘 반영되어 있는것을 확인할 수 있다.