Board ( 영속성의 전이 : cascade ) > SPRING_DATA_JPA

본문 바로가기
사이트 내 전체검색

SPRING_DATA_JPA

Board ( 영속성의 전이 : cascade )

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 102회 작성일 24-06-27 14:58

본문

package web.domain;


import java.util.HashSet;

import java.util.Set;


import jakarta.persistence.CascadeType;

import jakarta.persistence.Column;

import jakarta.persistence.Entity;

import jakarta.persistence.FetchType;

import jakarta.persistence.GeneratedValue;

import jakarta.persistence.GenerationType;

import jakarta.persistence.Id;

import jakarta.persistence.OneToMany;

import jakarta.persistence.Table;

import lombok.*;


@Entity

@Data

@ToString(exclude = "imageSet")

@Builder

@AllArgsConstructor

@NoArgsConstructor

@Table(name= "board")

public class Board extends BaseEntity {


@Id // primary key

@GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment

private Long bno;


@Column(length = 255, nullable = false) //칼럼의 저장 길이, null 허용 여부

private String title;


@Column(columnDefinition = "TEXT", nullable = false)

private String content;


@Column(length = 20, nullable = false)

private String writer;


//제목, 내용만 수정

public void change(String title, String content) {

this.title = title;

this.content = content;

}


@OneToMany(

mappedBy = "board", //BoardImage의 board변수

cascade = {CascadeType.ALL},

fetch = FetchType.LAZY //지연 로딩

)

@Builder.Default

private Set<BoardImage> imageSet =  new HashSet();


public void addImage(String uuid, String fileName) {


BoardImage boardImage = BoardImage.builder()

.uuid(uuid)

.fileName(fileName)

.board(this)

.ord(imageSet.size())

.build();

imageSet.add(boardImage);

}


public void clearImage() {

imageSet.forEach(boardImage -> boardImage.changeBoard(null));


this.imageSet.clear();

}

}






[설명]
@OneToManycascade 속성값으로 CascadeType.ALL을 지정해서 Board 엔티티 객체의 모든 상태 변화에 BoardImage 객체들 역시 같이 변경되도록 구성한다. 

또한 Board 객체 자체에서 BoardImage 객체들을 관리하도록 addImage()clearImage()를 이용해서 Board 내에서 BoardImage 객체들을 모두 관리하도록 한다.

addImage()는 내부적으로 BoardImage 객체 내부의 Board에 대한 참조를 this를 이용해서 처리한다. 
(양방향의 경우 참조 관계가 서로 일치하도록 작성한다.)
clearImage()는 첨부파일들을 모두 삭제하므로 BoardImage 객체의 Board 참조를 null로 변경하게 한다. 

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

공지사항
자유게시판
질문답변
1:1문의

 

별명 : 터푸가위
주소 : 부산시 동래구 명장로20번길 90
대표 : 박규태
메일 : dancepkt@******.com

접속자집계

오늘
157
어제
260
최대
10,760
전체
268,790
Copyright © dancePKT . All rights reserved.