점프 투 스프링부트를 참고하여 학습,작성하였습니다.
1.리포지터리(Repository)
Spring에서 리포지터리(Repository)는 데이터 접근 계층(Data Access Layer)을 추상화하고,
데이터베이스와의 상호작용을 담당하는 인터페이스
데이터 접근 추상화, 자동 구현 제공 ,CRUD 메서드 제공
1-1.리포지터리 만들기
import org.springframework.data.jpa.repository.JpaRepository;를 통해
Spring Data JPA가 제공하는 기본 리포지터리 인터페이스를 import 한다.
JpaRepository<Type, ID> 인터페이스를 상속받아 엔티티와 Integer 타입의 ID 를 사용하는 리포지터리를 정의한다.
package com.example.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.example.model.Question;
public interface QuestionRepository extends JpaRepository<Question, Integer> {
}
package com.example.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.example.model.Answer;
public interface AnswerRepository extends JpaRepository<Answer, Integer> {
}
2.질문 데이터 저장
DemoApplicationTests.java 파일을 다음과 같이 작성한다.
test
│ └─ java
│ └─ com
│ └─ example
│ └─ demo
│ └─ DemoApplicationTests.java
package com.example.demo;
import java.time.LocalDateTime;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.example.model.*;
import com.example.repository.*;;
@SpringBootTest
class DemoApplicationTests {
@Autowired
private QuestionRepository questionRepository;
@Test
void testJpa() {
Question q1 = new Question();
q1.setSubject("사과는 무엇인가요?");
q1.setContent("사과는 대체 뭘까....");
q1.setCreateDate(LocalDateTime.now());
this.questionRepository.save(q1); // 첫번째 질문 저장
Question q2 = new Question();
q2.setSubject("무기는 뭘까?");
q2.setContent("방패도 무기일까?");
q2.setCreateDate(LocalDateTime.now());
this.questionRepository.save(q2); // 두번째 질문 저장
}
}
2-1.클래스 선언
@SpringBootTest: 이 어노테이션은 스프링 부트 애플리케이션 컨텍스트를 로드하여 통합 테스트를 수행
@SpringBootTest
class SbbApplicationTests {
2-2.필드 선언
@Autowired: Spring이 QuestionRepository를 자동으로 주입하도록한다.
private QuestionRepository questionRepository;
데이터베이스와 상호작용할 QuestionRepository 필드
@Autowired
private QuestionRepository questionRepository;
2-3.테스트 메서드
@Test: 이 어노테이션은 testJpa 메서드가 테스트 메서드임을 표현
void testJpa(): testJpa 메서드는 JPA를 사용하여 데이터베이스에 데이터를 저장하는 테스트를 수행
@Test
void testJpa() {
Question q1 = new Question();
q1.setSubject("사과는 무엇인가요?");
q1.setContent("사과는 대체 뭘까....");
q1.setCreateDate(LocalDateTime.now());
this.questionRepository.save(q1); // 첫번째 질문 저장
Question q2 = new Question();
q2.setSubject("무기는 뭘까?");
q2.setContent("방패도 무기일까?");
q2.setCreateDate(LocalDateTime.now());
this.questionRepository.save(q2); // 두번째 질문 저장
}
2-4.테스트 실행
테스트를 실행해본다.
2-5.확인
H2 데이터베이스에 접근하여 SQL문을 통해 데이터가 저장되었는지 확인한다.
반응형
'BackEnd > SpringBoot' 카테고리의 다른 글
[Spring Boot] 리포지터리 데이터 조회 (0) | 2024.07.01 |
---|---|
[Spring Boot] 엔티티 테이블 매핑 (0) | 2024.06.21 |
[Spring Boot] ORM, JPA (0) | 2024.06.21 |