MyBatis와는 달리 JPA는 쿼리문을 작성하지 않아도 됩니다.
JUnit 테스트를 통해 CRUD를 해볼게요.
Board.java에서 소스에 커서를 위치하고 command + shift + T를 눌러서 생성해 줍니다.
package com.hhii.board.entity;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest // 스프링 부트에서 제공하는 테스트 어노테이션
class BoardTest {
@Autowired
BoardRepository boardRepository; // 스프링 컨테이너에 등록 된 BoardRepository 객체(Bean)를 주입 받음
@Test
void test_save() {
Board params = Board.builder()
.title("1번 타이틀")
.content("1번 컨텐츠")
.writer("1번 작성자")
.hits(1)
.deleteYn('N')
.build();
boardRepository.save(params);
/*
save는 Builder 패턴을 통해 생성된 객체. Board(엔티티 클래스에 @Builder 어노테이션 선언되어 있음)
생성자와 달리 빌더 패턴을 이용하면 어떤 맴버에게 어떤 값을 셋팅하는지 직관적으로 확인 가능.
생성자를 통해 객체를 생성한다면
Board entity = new Board("1번 타이틀", "1번 컨텐츠", "1번 작성자", 1, 'N'); 으로 인자 순서대로 작성해야함.
빌더패턴은 인자 순서 관계없이 객체 생성
*/
Board entity = boardRepository.findById((long) 4).get();
assertThat(entity.getTitle()).isEqualTo("1번 타이틀");
assertThat(entity.getContent()).isEqualTo("1번 컨텐츠");
assertThat(entity.getWriter()).isEqualTo("1번 작성자");
}
@Test
void test_findAll() {
//전체 게시물 수 조회
long boardCount = boardRepository.count();
//전체 게시글 리스트 조회
List<Board> boards = boardRepository.findAll();
System.out.println("전체 게시물 수 조회" +boardCount);
System.out.print("전체 게시글 리스트 조회" + boards);
}
@Test
void test_delete() {
Board entity = boardRepository.findById((long) 1).get(); //findById 매서드를 통해 엔티티를 조회
boardRepository.delete(entity); //조회한 엔티티를 삭제
}
}
실제로 CRUD를 테스트 하는 과정에서 잘 되는지 쿼리 조회를 통해 확인을 해주세요.
select * from board;