BoardRepositoryTest ( read ) > SPRING_DATA_JPA

본문 바로가기

사이트 내 전체검색

뒤로가기 SPRING_DATA_JPA

BoardRepositoryTest ( read )

페이지 정보

작성자 관리자 작성일 24-06-28 09:47 조회 70 댓글 0

본문

package web.repository;


import java.util.Optional;

import java.util.UUID;

import java.util.stream.IntStream;


import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.data.domain.Page;

import org.springframework.data.domain.PageRequest;

import org.springframework.data.domain.Pageable;

import org.springframework.data.domain.Sort;


import jakarta.transaction.Transactional;

import lombok.extern.log4j.Log4j2;

import web.domain.Board;

import web.domain.BoardImage;

import web.dto.BoardListReplyCountDTO;


@SpringBootTest

@Log4j2

public class BoardRepositoryTest {


@Autowired

private BoardRepository boardRepository;


@Test

@Transactional //Board 에서 fetch = FetchType.LAZY 일 경우 추가

public void testReadWithImages() {

Optional<Board> result = boardRepository.findById(1L); //존재하는 bno 값 매칭


Board board= result.orElseThrow();


log.info(board);

log.info("=======================");

for(BoardImage boardImage : board.getImageSet()) { //첨부 이미지 목록

log.info(boardImage);

}

}

...

...

...

}





[설명]

테스트를 실행하면 에러가 발생하게 된다.

01. Board 클래스 - @OneToMany(

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

cascade = {CascadeType.ALL},

fetch = FetchType.EAGER //즉시 로딩

)

[콘솔 확인]

select 구문이 한번 실행한다. ( board , board_image - join 처리 )

02. 위 예제와 같이 @Transactional을 추가

[콘솔 확인]

select 구문이 각각 실행한다. ( board , board_image )

03@EntityGraph를 이용하는 방법

댓글목록 0

등록된 댓글이 없습니다.


Copyright © dancePKT. All rights reserved.
PC 버전으로 보기