jpa 만들기

package shop.mtcoding.blog.board;

import org.springframework.data.jpa.repository.JpaRepository;

public interface BoardJAPRepository extends JpaRepository<Board, Integer> {

}

테스트 만들고 save 테스트하기

package shop.mtcoding.blog.board;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import shop.mtcoding.blog.user.User;

@DataJpaTest
public class BoardJAPRepositoryTest {

    @Autowired
    private BoardJAPRepository boardJAPRepository;

    // save
    @Test
    public void save_test(){
        // given
        User sessionUser = User.builder().id(1).build();
        Board board = Board.builder()
                .title("제목5")
                .content("내용5")
                .user(sessionUser)
                .build();
        // when
        boardJAPRepository.save(board);

        // then
        System.out.println("save_test : " + board.getId());
    }
}

Untitled

findById 테스트

@Test
public void findById_test(){
    // given
    int id = 1;

    // when

    // 존재하지 않는값이 온다면 널을 받는다.
    Optional<Board> boardOp =  boardJAPRepository.findById(id);

    // 만약에 존재 한다면
    if (boardOp.isPresent()) {
        // 겟으로 받아옴.
        Board board = boardOp.get();
        System.out.println("findById_test : " + board.getTitle());
    }

    // then
}

Untitled

레이지 전략이니 유저는 안나오고 보더만 나옴

findByIdJoinUser 만들기

package shop.mtcoding.blog.board;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface BoardJAPRepository extends JpaRepository<Board, Integer> {

    @Query("select b from Board b join fetch b.user u where b.id = :id")
    Board findByIdJoinUser(@Param("id") int id);
}

findByIdJoinUser 테스트

@Test
public void findByIdJoinUser_test(){
    // given
    int id = 1;

    // when
    boardJAPRepository.findByIdJoinUser(id);

    // then
}

Untitled