Backend/Spring

Repository 작성 및 Repository Test

brian110326 2024. 4. 3. 20:51

repository 패키지를 java폴더 밑에, repository(test용) 패키지를 test폴더 밑에

 

package com.example.jpa.repository;

import com.example.jpa.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRepository extends JpaRepository<Member, Long> {}

JpaRepository<Entity, Entity에서 기본키의 타입>

 

package com.example.jpa.repository;

import java.util.List;
import java.util.Optional;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.example.jpa.entity.Memo;

// JUnit : 테스트 라이브러리

@SpringBootTest // test 전용 클래스
public class MemoRepositoryTest {

    @Autowired // MemoRepository memoRepository = new MemoRepositoryImpl(MemoRepository 구현하는
               // 클래스) 자동으로 만들어줌
    private MemoRepository memoRepository;

    @Test // 테스트 메소드(return type : void)
    public void insertMemo() {
        // 100개의 메모를 입력

        for (int i = 1; i < 101; i++) {
            Memo memo = new Memo();
            memo.setMemoText("MemoText" + i);

            // save() : insert, update
            memoRepository.save(memo); // == dao.insert()
        }

    }

    @Test
    public void getMemo() {
        // 특정 아이디 메모 조회

        // Optional : null값을 체크할 수 있는 메소드를 보유하고 있음
        Optional<Memo> result = memoRepository.findById(21L);

        System.out.println(result.get());
    }

    @Test
    public void getMemoList() {
        // 전체 메모 조회

        // Optional : null값을 체크할 수 있는 메소드를 보유하고 있음
        List<Memo> list = memoRepository.findAll();

        for (Memo memo : list) {
            System.out.println(memo);
        }
    }

    @Test
    public void updateMemo() {
        // update할 entity를 찾기
        Optional<Memo> result = memoRepository.findById(25L);

        Memo memo = result.get();

        memo.setMemoText("update Title!");

        // save가 원본과 달라진 점을 찾아서 update로 함
        System.out.println(memoRepository.save(memo));

    }

    @Test
    public void deleteMemo() {
        // 삭제할 entity 찾기
        Optional<Memo> result = memoRepository.findById(24L);
        Memo memo = result.get();

        // 삭제
        memoRepository.delete(memo);
        System.out.println("삭제된 memo : " + memoRepository.findById(24L));
    }
}

 

프로젝트가 길어지면 중간에 예외 혹은 오류를 찾기 힘들다. 따라서 중간중간 데이터 테이블과 sql문이 잘 실행이 되는지 test를 할 필요가 있다.

'Backend > Spring' 카테고리의 다른 글

Native Sql  (0) 2024.04.12
JPQL  (0) 2024.04.11
영속성 전이 : CASCADE  (0) 2024.04.08
JPA와 DB 연동  (0) 2024.04.03
Spring Boot 기본 코드 및 Annotation  (4) 2024.04.01