GDSC-Kwangwoon-University / BE-TUTORIAL

4 stars 2 forks source link

[BE Tutorial] App 이웅재의 3장 생각해보기 #3

Closed wjlee611 closed 2 weeks ago

wjlee611 commented 6 months ago

🔍 생각해보기

  1. 예측되는 과정은 아래와 같을 거 같습니다 a. localhost 접속 b. HomeController에서 index 페이지로 리다이렉트 (여기서 templates 의 \<name>.html 이 호출되는 듯..?) c. 제출 클릭시 POST 메서드로 /submit API 호출 d. DbController.submit 에서 수신 e. DbService.save 메서드 호출 (단, 비동기 처리가 아니기 때문에 실제 DB에 저장되지 않은 채로 문구가 /submit 에 반환됨) f. DbService에서 PracticeDto 모델 생성 (toEntity 메서드는 builder pattern을 이용해 Practice 객체 반환) g. PracticeRepository.save 메서드 호출 (JpaRepository를 상속받기에 제네릭으로 지정된 Practice 규칙에 따라 DB에 엔트리 생성)

  2. java로 작성된 관계형 데이터베이스로 실제로 영구적으로 데이터를 저장하는 것이 아닌 메모리상에 띄우는 데이터베이스 입니다

  3. form에서 input 태그의 name 필드가 엔티티 모델의 필드에 대응되는 거 같습니다. 따라서 form이 submit 되면 multipart의 형태로 데이터가 전송되는데, 이 때 {field:value, ...}와 같은 형태로 전송됩니다. 이 때, ModelAttribute 어노테이션을 사용하면 사용자가 보내는 데이터를 객체 형태로 매핑이 가능해집니다. (RequestParam 어노테이션의 경우에는 단순 데이터 1:1 매핑방식)

  4. 아래에서 언급합니다

🛠️ 진행하다 어려웠던 부분에 대해서 작성 or 그런 부분을 어떻게 해결했는지 알려주세요!

📃 참고한 출처

khyojun commented 6 months ago

@wjlee611 오오 웅재님! 너무 잘 생각해주셔서 놀랐습니다! DbService.save 메서드 호출 (단, 비동기 처리가 아니기 때문에 실제 DB에 저장되지 않은 채로 문구가 /submit 에 반환됨) 이 부분에 있어서 비동기 처리가 아니기에 저장되지 않은 채로 return되어서 문구가 반환된다고 하셨는데요! 코드를 실행하였을 때 쿼리가 어느 시점에 실행되는지 확인해보시는 작업을 추가로 진행해보시면 좋을거 같아요! (중간중간 출력문을 넣어서 분기 확인해보는 방법도 있습니다.)