스프링 부트 10일차

선장원·2022년 1월 17일
1

SpringBoot

목록 보기
12/18

10일차 (01/17)

스프링 부트

Entity 참조관계 (FK)

CommentEntity

@ManyToOne
댓글 : 게시글 = N : 1

앞부분이 해당 클래스의 자리

@ManyToOne(fetch = FetchType.LAZY)

LAZY는 해당 메서드를 통해서 필요하면 가져옴
EAGER는 모든 참조를 가져옴

@JoinColume(name = “board_id”)
참조 하고자 하는 테이블의 PK컬럼이름
DB에 만들어지는 이름으로 해야함

private BoardEntity boardEntity;
참고하고자 하는 테이블을 참고하고자하는 엔티티 전체를 설정

toSaveEntity

boardId가 컴럼 이름은 boardId로 되어 있지만 타입은 BoardEntity로 되어 있어서 Long 타입 숫자를 넣어줘도 인식을 못하고 service에서 해당 게시글의 boardId를 사용해서 Entity클래스를 가져와서 CommentEntity클래스로 보내줘야 함

그럼 jpa가 알아서 PK값이 id만 입력을 하고 나중에 그 아이디를 이용해서 게시판도 불러오는 것이 가능하다

Service

BoardRepository를 사용해서 해당 boardId의 Entity클래스를 불러와서 toSaveEntity메서드를 실행 할 때 같이 보내준다

BoardEntity

@OneToMany(mappedBy = “boardEntity” , fetch = FetchType.LAZY)
private List<CommentEntity> commentEntityList = new ArrayList<>();

fetch

EAGER는 한번에 모든 참조를 가져옴

LAZY는 필요할 때 가져오고 메소드를 통해서 가져오고

on delete cascade

cascade = CascadeType.ALL
orphanRemoval = true

부모 테이블에서 @OneToMany 어노테이션 안에 설정을 해주면 on delete cascade 로 사용할 수 있다

위 방법 말고 @OnDelete의 방법도 있지만 이 방법은 방식이 다르다고 한다

외래키로 지정된 자식클래스 불러오기

부모 클래스의 자식 클래스를 불러올 때는 따로 불러오지 않고 부모 클래스의 List클래스를 불러오면 한번에 불러 올 수 가 있다.

profile
코딩도전기

2개의 댓글

comment-user-thumbnail
2022년 1월 19일

같은 수업 듣는 거 맞제?

1개의 답글