Repository 만들기

Dami·2024년 1월 19일
0

SPRING

목록 보기
12/14
post-thumbnail

MySQL과 스프링부트 연동 을 진행한 후 데이터를 관리하기 위해선(삽입, 삭제, 수정 등..) 데이터베이스와 연동하는 JPA Repository를 만들어야 한다.

Repository 만들기

package com.mysite.sbb;

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

public interface QuestionRepository extends JpaRepository<Question, Integer> {

}

JpaRepository

JPA가 제공하는 인터페이스. CRUD 작업을 처리하는 메소드를 이미 가지고 있다.

CRUD란 데이터를 처리하는 4가지 기본적인 기능
- C (Create) : 데이터 생성(추가)
- R (Read) : 데이터 읽기(조회)
- U (Update) : 데이터 수정(업데이트)
- D (Delete) : 데이터 삭제

의존성 주입 : @Autowired

Test/java/com.mysite.sbb/SbbApplicationTests를 만드로 junit을 이용해 DB에 넣어보려고 한다.

package com.mysite.sbb;

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

import java.time.LocalDateTime;

@SpringBootTest
class SbbApplicationTests {

    @Autowired
    private QuestionRepository questionRepository;

    @Test
    void contextLoads() {
        Question q1 = new Question();
        q1.setSubject("sbb가 무엇인가요?");
        q1.setContent("sbb에 대해 알고 싶습니다.");
        q1.setCreateDate(LocalDateTime.now());
        this.questionRepository.save(q1);

        Question q2 = new Question();
        q2.setSubject("스프링부트 모델 질문입니다.");
        q2.setContent("id는 자동으로 생성 되나요?");
        q2.setCreateDate(LocalDateTime.now());
        this.questionRepository.save(q2);

    }
}
  • @SpringBootTest : 이 class가 Spring Boot의 테스트 클래스이다!! 를 의미한다. → 질문 엔터티의 데이터를 생성할 때 Repository가 필요!
  • @Autowired : 데이터 생성시 필요한 Repository → 어노테이션을 통해 DI(의존성 주입) 기능을 사용해 QuestionRepository의 객체를 주입.
    => 즉 객체를 자동으로 만들어서 주입.

객체를 주입하는 방식
1. @Autowired 어노테이션을 사용
2. Setter method 를 이용하는 방법
3. 생성자를 이용 하는 방법
⇨ 순환 참조 문제 등의 이유로 어노테이션 방법보단 생성자를 통해 객체 주입하는 방식이 권장 됨. Test 코드는 JUnit이 생성자를 통한 객체 주입을 지원X => 어노테이션으로 진행

출처 : 점프 투 스프링부트

0개의 댓글