inblog logo
|
devleekangho
    스프링부트

    [스프링 부트] 8. Repository 객체 설계 및 테스트

    KangHo Lee's avatar
    KangHo Lee
    Nov 17, 2024
    [스프링 부트] 8. Repository 객체 설계 및 테스트
    Contents
    BoardRepository.javaBoardRepositoryTest.java

    BoardRepository.java

    @RequiredArgsConstructor @Repository public class BoardRepository { private final EntityManager em; public List<Board> findAll() { Query q = em.createNativeQuery("select * from board_tb order by id desc", Board.class); return q.getResultList(); } }

    EntityManager

    • JPA의 핵심 인터페이스로 엔티티(데이터베이스 테이블에 매핑된 객체)를 관리하고 데이터베이스 작업을 수행하는 데 사용됩니다.
    • 엔티티 생명주기 관리, JPQL(Java Persistence Query Language) 및 네이티브 SQL 쿼리 실행, 트랜잭션 관리, 캐싱 등의 기능이 있습니다.

    BoardRepositoryTest.java

    @Import(BoardRepository.class) public class BoardRepositoryTest { // 여기는 생성자로 의존성 주입이 불가능 @Autowired private BoardRepository boardRepository; @Test public void findAll_test() { // given // findAll() 메서드는 매개 변수가 없으므로 생략 // when List<Board> boardList = boardRepository.findAll(); System.out.println(); // then for (Board board : boardList) { System.out.println(board.getId()); System.out.println(board.getTitle()); System.out.println(board.getContent()); System.out.println(board.getCreatedAt()); System.out.println("============================"); } } }
    • @DataJpaTest
      • DB 관련된 자원(EntityManager같은)들을 메모리(IoC)에 올립니다.
      • @Import(BoardRepository.class) → 개발자가 만든 DB 자원이라 수동으로 넣어줘야 합니다.
    💡
    검증 단계를 System.out.print 하는 방법도 있지만 debug로 체크하는 것이 더 보기 좋습니다.
    notion image
     
    Share article
    Contents
    BoardRepository.javaBoardRepositoryTest.java

    devleekangho

    RSS·Powered by Inblog