5. 리포지터리 - 점프 투 스프링부트(게시판 만들기)Spring2022. 12. 31. 18:39
Table of Contents
728x90
728x90
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다.
자바 8, 스프링부트 2.7.7버전입니다.
[ 리포지터리 ]
엔티티만으로는 데이터베이스에 데이터를 저장하거나 조회 할 수 없다.
데이터 처리를 위해서는 실제 데이터베이스와 연동하는 JPA 리포지터리가 필요하다.
리포지터리란?
엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들을 사용하기 위한 인터페이스이다.
데이터 처리를 위해서는 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)가 필요하다. 이 때 이러한 CRUD를 어떻게 처리할지 정의하는 계층이 바로 리포지터리이다.
package com.example.board.Question;
import org.springframework.data.jpa.repository.JpaRepository;
public interface QuestionRepository extends JpaRepository<Question, Integer> {
}
package com.example.board.Answer;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AnswerRepository extends JpaRepository<Answer, Integer> {
}
리포지터리로 만들기 위해 JpaRepository 인터페이스를 상속했다.
JpaRepository를 상속할 때는 제네릭스 타입으로 <Question, Integer> <Answer, Integer> 처럼 리포지터리의 대상이 되는 엔티티의 타입(Question)과 해당 엔티티의 PK의 속성 타입(Integer)을 지정해야 한다.
이것은 JpaRepository를 생성하기 위한 규칙이다.
이제 QuestionRepository, AnswerRepository를 이용하여 question, answer 테이블에 데이터를 저장하거나 조회할 수 있다.
테스트를 위해 ApplicationTests.java파일을 사용한다.
파일경로 : /practice/src/test/java/com/mysite/sbb/PracticeApplicationTests.java
package com.example.board;
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.board.question.Question;
import com.example.board.question.QuestionRepository;
@SpringBootTest
class PracticeApplicationTests {
@Autowired
private QuestionRepository questionRepository;
@Test
void testJpa() {
Question q1 = new Question();
q1.setSubject("질문1");
q1.setContent("답변1");
q1.setCreateDate(LocalDateTime.now());
this.questionRepository.save(q1);
Question q2 = new Question();
q2.setSubject("질문2");
q2.setContent("답변2");
q2.setCreateDate(LocalDateTime.now());
this.questionRepository.save(q2);
}
}
파일을 작성 한 뒤 Run → Run As → JUnit Test를 선택하여 실행한다.
반드시 서버가 꺼진 상태에서 실행하여야 한다.
정상 실행되었다.
데이터베이스에 값이 잘 들어갔나 확인해 보기 위해 로컬서버를 시작하고 H2 콘솔에 접속하여 다음 쿼리문을 실행해 보자.
잘 들어온 것을 확인할 수 있다.
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!