MySQL과 스프링부트 연동 을 진행한 후 데이터를 관리하기 위해선(삽입, 삭제, 수정 등..) 데이터베이스와 연동하는 JPA 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 => 어노테이션으로 진행
출처 : 점프 투 스프링부트