SpringBoot/스프링부트 스터디

스프링부트 스터디 1주차 - create 기능 구현

공부 기록장 2024. 5. 26. 14:48

▶ 먼저 CRUD 란?

데이터 처리 기능인 Create Read Update Delete 를 묶어서 일컫는 말

 

가장 기초적인 게시판을 만드는데 있어서 필요한 기능들

질문 생성
질문 검색
질문 수정
질문 삭제
댓글 생성
댓글 수정
댓글 삭제
...

 

여기서 create 의 역할을 지닌 질문 생성, 댓글 생성 기능을 구현해볼 것이다.

과정은 다음과 같다.

1. 질문엔티티 만들기
   -Question.java

2. 답변엔티티 만들기
   -Answer.java

3. h2 데이터베이스에서 질문, 답변 테이블 생성됐는지 확인하기


4. 리포지터리 생성하기
   -QuestionRepository.java
   -AnswerRepository.java

5. JUnit 으로 리포지터리가 정상적으로 동작하는지 확인하기


6. 질문 작성 기능 만들기
   -QuestionController.java
   -QuestionService.java
   -QuestionForm.java

7. 댓글 작성 기능 만들기
   -AnswerController.java
   -AnswerService.java
   -AnswerForm.java

 


1.  질문 엔티티 만들기

Question.java


2.  답변 엔티티 만들기

Answer.java

 


3.  서버를 재가동하면 다음과 같이 Question과 Answer 테이블이 자동으로 생성됨

 

 


4. 리포지터리 생성하기

(리포지터리는 테이블의 데이터들을 저장, 조회, 수정, 삭제 등을 할 수 있도록 도와주는 인터페이스이다.)

QuestionRepository.java

 

JpaRepository 는 JPA 가 제공하는 인터페이스 중 하나로 CRUD  작업을 처리하는 메소드들을 이미 내장하고 있어서 데이터 관리 작업을 좀 더 편리하게 처리할 수 있다고 한다.

 

JpaRepository<Question, Integer>

다음 코드는 Question 엔티티로 리포지터리를 생성한다는 의미이며 Question 엔티티의 기본키가 Integer 임을 지정해줘야한다.

 

AnswerRepository.java

 

마찬가지로 AnswerRepository 인터페이스도 생성하였다.

이렇게 만든 QuestionRepository 와 AnswerRepository 를 이용하여 question, answer 테이블에 데이터를 저장, 조회, 수정, 삭제할 수 있다.

 


5. JUnit 으로 리포지터리가 정상적으로 동작하는지 확인하기

SbstudyApplicationTests 실행
정상적으로 데이터가 저장된 것을 알 수 있다.

 

6. 질문 작성 기능 만들기

QuestionController.java

 

QuestionService.java

 

 

QuestionForm.java 전체코드

 

7. 답변 작성 기능 만들기

AnswerController.java
AnswerService.java
AnswerForm.java

 

 

 

▶ 결과

 

localhost:8080에 접속하면 맨 처음 나오는 메인 페이지로 작성된 질문 목록이 나온다

 

질문 등록하기 버튼을 누르고 제목과 내용에 글을 쓰고 저장하기 버튼을 누르면

 

다음과 같이 질문이 저장된 것을 알 수 있으며

 

 

추가로 답변을 계속 등록할 수 있다