CRUD 실습

스프링부트, CRUD 게시판을 위한 첫걸음 [탐구/기록]

rexondex 2024. 9. 30. 16:52

 

오라클에서 DB 기본 세팅했습니다.

테스트 예제 쿼리를 날리면 정상 작동합니다.

 

 

스프링부트 index.html

 

 

 

일단 처음에는 크게 3가지 항목으로 나눠봤습니다.

 

 

 

# 클라이언트

 

- 요청 : '최근 10개의 게시물이 있는 메인 화면을 보여줘.'

 

사용자가 처음 사이트에 접속했다면, 게시물이 있는 메인 화면이 처음 나와야 합니다.

[최근 10개의 게시물이 있는 메인 화면을 보여줘] 의 기능을 맡는 메서드의 주소를 호출하면,

서버는 이 기능을 맡는 메서드의 작업을 수행한 후 [최근 10개의 게시물이 있는 '메인 화면']을 반환해야 합니다.

 

 

# 스프링부트(서버)

 

- 요청에 대해서 : READ 읽기 작업을 맡는 메서드를 수행

 

Controller 레이어 : 클라이언트의 요청을 받아 해당하는 '읽기' 메서드를 호출해야 합니다.

 

[ 한 건만 읽기 or 여러 건 읽기 ]

 

한 건만 읽기의 경우 특정 게시물 조회 요청을 받았을 시

한건의 게시물 정보를 반환해야 합니다.

여러 건 읽기의 경우 메인 화면과 같이 게시물 목록을 불러와야

할 때 여러 건 읽기 메소드를 호출해야 합니다.

 

요청에 대한 작업은 여러 건 읽기 메소드를 호출하는 것입니다.

 

일단 처음에 클라이언트가 요청한 의도는 [ 게시물 목록을 불러오는 일 ] 이므로,

DB에 저장된 게시물 목록에서 [ 여러 건 읽기 ] 를 통해 저장된 날짜 속성의 최근으로부터 10개를 불러와 클라이언트로 반환합니다.

브라우저는 DB로부터 불러온 데이터를 웹에 표현하면 사용자가 요청한 메인 게시물이 있는 화면을 볼 수 있습니다.

 

 

# 데이터베이스

 

서버의 요청에 대해 응답하고, 제공할 데이터를 반환합니다.

무결성 제약 및 성능 이슈를 확인해야 합니다.

 

 

 

위 예시들에서는 '여러 건 읽기' 과정을 떠올려봤는데,

CRUD 에 해당하는 다양한 흐름들을 위해 필요한 클래스 및 메소드가 많이 있습니다.

GET은 무언가 요청하고 그 데이터를 반환받아 화면에 표현해야 하는 경우에 해당되며

POST는 HTTP의 구조 중 Request Body 부분에 데이터를 담아 전송하고

응답은 생성된 데이터의 '상태' 를 나타내는 메시지를 반환합니다.

 

예를 들어

"작성이 완료되었습니까?" / ( 완료되었습니다 / 에러입니다 / 기타 결과 )

와 같이 '상태'에 대한 응답 메시지를 반환합니다.

 

 

 

Q. getPosts() 라는 메서드를 PostMan으로 호출한다면...?

 

getPosts() 라는 메서드는 일단 호출이 되면 게시물 목록을 조회합니다.

그리고 이를 클라이언트에 반환합니다.

 

함수가 별도의 파라미터를 받지 않으므로 Params , Headers , Body 에 입력 없이 Send 를 한다면

게시물목록을 반환받을 수 있습니다.

 

가져온 데이터를 타임리프를 이용하여 동적 html 을 생성하여 서버로부터 SSR(서버사이드렌더링)을 통해 브라우저로 전달합니다.

 

그러면 메인 화면에 최신 게시물을 확인할 수 있는 동적 html 화면을 띄울 수 있을 것입니다.