[TIL]멋쟁이사자처럼 백엔드스쿨 3기 27일차

Enter·2023년 3월 30일
0

TIL

목록 보기
7/9

📖오늘 공부한 내용

점프 투 스프링부트(QnA서비스)

2-01. ~ 2-11.까지 흐름

  1. 프로젝트 생성
  2. 설정 세팅
  3. 메인 페이지 만들기
    (메인 컨트롤러 생성→url매핑(/sbb2))
  4. DB 연결.(MariaDB)
  5. QnA서비스의 엔티티 구상(qestion, answer)
  6. 리포지터리 생성(데이터베이스 테이블에 접근하는 메서드들 사용하기 위해.)
  7. DB와 잘 연결되었는지 테스트코드를 통해 확인. 데이터 조회, 생성, 수정, 삭제 기능(기본적으로 제공하지 않는 메서드를 이용할 경우 리포지터리의 인터페이스 변경 필요.)
    • DB세션만료로 오류 발생시 @Transactional 애너테이션 사용.
  8. 도메인 별로 패키지 정리(분류)
  9. 질문 목록 페이지 만들기(QuestionController생성→url매핑(/question/list)→question_list.html생성)
    • 타임리프 템플릿 엔진 사용을 위한 설치
    • Controller에서 Model 클래스를 사용해 템플릿에서도 쓸 수 있게 함.
    • @RequiredArgsConstructor는 롬복이 제공하는 애너테이션으로 final이 붙은 속성을 포함하는 생성자를 자동으로 생성하는 역할.→final이 붙은 QuestionRepository를 위해 QuestionController에 붙여줌.
    • 타임리프 사용 시 th에 요류가 뜬다면 사진처럼 체크 표시 해제.
  10. root로 들어올 시 리다이렉트 이용하여 /question/list로 이동.(```return "redirect:/question/list"`)
  11. 컨트롤러에서 리포지터리를 직접 호출X, 중간에 서비스를 두어 데이터 처리 해야함.→ QuestionService생성.
    • Controller -> Service -> Repository 구조로 데이터 처리
  12. 질문 상세 페이지 만들기(질문 목록 클릭시 상세화면 호출되도록 html코드 수정 → url매핑(/question/detail/{id})→question_detail.html생성)
  13. 답변 등록 버튼 만들기(답변 등록 버튼 question_detail.html에 만들고 버튼 누르면 /answer/create/${question.id}으로 가도록 함. → AnswerController생성 → url매핑(/answer/create/{id} → 등록한 답변 저장을 위해 AnswerService생성 → 답변 저장O, 질문 상세 페이지에 답변 표시하기 위해 question_detail.html 수정.)



❓궁금한 내용

질문1. detail url 매핑할 때는 왜 value값을 지정해주는지?@GetMapping(value = "/question/detail/{id}")
→ value를 생략해 줘도 된다고 함. 그럼 안쓴거는 다 생략한건지 아니면 value를 쓰는 기준이 있는데 생략해서 구분이 안가는 건지.

질문2. Model의 의미가 템플릿에서 사용할 수 있도록 해주는 것이 끝인가?

질문3. Bean의 의미와 역할?

질문4. Get, Post 둘 다 해주는 이유?

질문5. Optional은 언제 사용?

profile
Cherish the moment :)

0개의 댓글