본문 바로가기
내일배움캠프/회고록

8월 19일 월요일

by jhdevtrace 2024. 8. 20.

결론

지회 튜터님 피드백 완전 격파 인증

스탠다드 이론반 수업

동현 튜터님 기술 블로그 강연

본문

 일단, 오늘은 오전에 발제가 있어서, 오늘부터 며칠 동안은 강의만 잔뜩 들을 예정이다. 그래도 최대한 빠르게 강의를 넘기고, 과제를 빠르게 처리할 계획이다. 우선 강의는 남은 입문 강의 약 1시간 + ~1-9까지 3시간 + ~2-13까지 5시간 = 약 9시간. 실제로는 넉넉히 14시간 정도 걸릴 것 같으니, 수요일 오전까지 강의를 다 듣고, 오후부터는 과제에 들어갈 계획이다. 넉넉히 이번 주 안에 필수 과제는 완료할 수 있지 않을까 생각한다.

 

 

나만의 과제 계획

입문 과제랑 겹치는 부분이 많아서, 필수까지는 JPA활용만 잘 하면 될 듯

 

1단계 : 일정을 저장, 단건 조회, 수정 schedule table : schedule_id, schedule_writer, title, reg_date, mod_date

 

2단계 : 일정에 댓글을 달 수 있다(댓글과 일정은 연관성이 있다) 댓글은 저장, 단건 조회, 전체 조회, 수정, 삭제가 가능하다 comment : content, reg_date, mod_date, commnet_writer = user_id, schedule_id 요청에 schedule id 박아서 연관성 주기

 

3단계 : JPA의 Pageable과 Page 인터페이스를 활용하여 페이지네이션을 구현 페이지 크기, 페이지 번호를 쿼리 파라미터로 요청하기 할일 제목, 할일 내용, 댓글 개수, 일정 작성일, 일정 수정일, 일정 작성 유저명을 조회 디폴트 크기는 10 수정일 기준 내림차순

 

4단계 : 일정을 삭제하면 댓글도 삭제되어야 함(JPA 영속성 전이 기능을 활용)

 

5단계 : 유저를 저장, 단건 조회, 전체 조회, 수정, 삭제 기능 구현 user : user_name, email, reg_date, mod_date, user_id 일정을 작성하는 사람은 일정 담당 유저를 배치할 수 있다 유저 id로 값을 넣으라는 뜻이겠지??

 

6단계 : 일정 단건 조회에 join문 써서 고유 식별자, 유저명, 이메일 받으세요 일정 전체 조회 시, 담당 유저 정보는 포함되지 않음 그니까 id값이 있으면 동적으로 join문 넣어주고, id값이 없으면, 그냥 select * from schedule JPA 지연 로딩 기능을 활용

 

결론(공부해야 할 내용)

JPA 사용법 익히기

JPA pageable, page 인터페이스 활용

JPA 영속성 전이 기능

JPA 지연 로딩 기능

지회 튜터님 : 연관 관계! one to many 이런 것도 공부해보셈!

 

======================================================

 

 

지회 튜터님 피드백

  • Readme가 깔끔하게 작성되어 있어 무척 좋았습니다! 깃헙 링크에 들어갔을 때 가장 먼저 보이는 얼굴과도 같은 부분이니 앞으로도 잘 관리하시면 좋겠습니다. → ^_^
  • gradle에 사용되지 않는 라이브러리들이 보입니다. Gradle 의존성이 커질수록 프로젝트 어플리케이션의 크기도 증가하고, 이는 프로젝트가 커지면 커질수록 문제가 될 수 있는 부분이니 주의해서 작성해주세요. → 완료
  • Uri 설계가 restful하지 않습니다. (http 메서드 + 기능 <<< 작성해주신 요 부분) → 완료
    • Restful api에서는 uri가 자원(schedule)을 나타내고, http 메서드가 행위(get, post, delete…)를 나타냅니다.
    • 작성해주신 것처럼 /schedules/get 과 같은 주소를 만든다면, 사실 행위를 나타내는 표현이 두 번 반복되어 있는 것입니다. 목적에 맞는 http 메서드 사용으로 충분합니다.
  • 사용되지 않는 주석으로 된 코드는 모두 소거해주세요! → 완료
  • reg_date, mod_date 등 java의 명명 규칙에 맞지 않는 부분이 조금씩 보이는데, 아마 db의 컬럼명 때문에 그렇게 하신 것이 아닐지 짐작합니다. 하지만 그러실 필요 없습니다! 해당 컬럼과 매핑만 잘 해준다면, 이름이 전혀 달라도 무관하니 규칙을 잘 지켜주세요. → 완료
  • 조건이 있는 조회의 경우, 어떻게 하면 동적으로 쿼리를 생성할 수 있을지 고민해보세요. If-else 말고 다른 방법이 분명히 있을 겁니다^_^ → 완료
  • save / update 등의 메서드 반환값이 왜 int일까 살펴보니 affected row count 였군요! 보통은 성공 여부를 위해 boolean 값을 반환하거나, 저장/수정된 값을 반환하거나, 아무 값도 반환하지 않는 방식을 사용합니다. 사용하신 방식도 특정한 상황에서는 쓰일 수 있습니다! 틀리지는 않았으나 보편적인 방식은 아니므로, 반환값에 대해서도 고민해보시면 좋겠습니다. → 완료
  • @RequestParam 에는 default value를 지정할 수 있는 방법이 있습니다. 검색을 추천합니다! → 완료
  • 레이어드 아키텍처에 대해 잘 이해하고 계신 것 같습니다. → ^_^

온통 지적하는 사항만 잔뜩 써놓은 것 같지만..그만큼 꼼꼼하게 봤다고 생각해주세요.(?)ㅎㅎ 중간에도 한 번 말씀드렸듯 매우 잘 하고 계시고, 이해도도 좋으시고, 밝은 모습도 보기 좋습니다! 앞으로도 많은 발전 기대하겠습니다. (+) 아직 구현하지 못하신 부분에 대해서는 주말에 조금만 시간 내서 한 번 해 보시면 좋을 것 같습니다. 정말 자주 쓰이는 부분들만 넣어놓았으니 많은 도움이 될 것입니다. 말씀 주시면 다시 피드백드릴 수 있으니 편하게 생각해주세요. → 구현 못했던 6단계 완성

지회 튜터님 : 피드백 격파 인정!

 

 

======================================================

1. 스프링 MVC (Model-View-Controller)

  • 목적: 전통적인 동기식 웹 애플리케이션 개발을 위한 프레임워크.
  • 아키텍처: 동기식 요청-응답 기반으로 동작. 클라이언트가 요청을 보내면 서버는 요청을 처리하고, 처리 결과를 클라이언트에 응답으로 보냅니다.
  • 주요 특징:
    • 전통적인 웹 개발에 많이 사용되며, 템플릿 엔진(e.g., Thymeleaf, JSP)과 함께 뷰(View)를 렌더링합니다.
    • HTTP 프로토콜을 기반으로 동작하며, RESTful 웹 서비스 구축에도 자주 사용됩니다.
    • 서블릿 API와 밀접하게 연동됩니다.

2. 스프링 Batch

  • 목적: 대규모의 데이터 처리 작업을 배치로 실행하기 위한 프레임워크.
  • 아키텍처: 대량의 데이터 처리(ETL 작업, 로그 처리, 대용량 데이터 변환 등)에 적합한 배치 처리 모델을 제공합니다.
  • 주요 특징:
    • 트랜잭션 관리, 대량 데이터 처리, 재시도, 스킵 처리와 같은 배치 작업에 필수적인 기능들을 제공.
    • Job, Step, Reader, Processor, Writer 등의 핵심 개념을 바탕으로 배치 작업을 설계.
    • 주로 시간이 오래 걸리거나 시스템 리소스를 많이 사용하는 작업에 사용됩니다.
    • 스프링 MVC나 WebFlux와는 달리 실시간 요청-응답이 아닌 스케줄러 기반 또는 수동으로 실행되는 작업에 초점을 맞춥니다.

3. 스프링 WebFlux

  • 목적: 비동기식, 논블로킹 웹 애플리케이션 개발을 위한 프레임워크.
  • 아키텍처: 리액티브 스트림(reactive stream) 기반으로 동작하며, 비동기 논블로킹 방식으로 요청을 처리합니다.
  • 주요 특징:
    • 리액터(Reactor) 라이브러리를 사용하여 데이터 스트림과 비동기 작업을 관리합니다.
    • 서버 자원의 효율성을 높이고 고성능 웹 애플리케이션을 구현하는 데 적합.
    • 이벤트 기반 아키텍처로 많은 동시 연결을 효율적으로 처리할 수 있습니다.
    • 전통적인 스프링 MVC와 달리 서블릿 API를 사용하지 않고, Netty 같은 논블로킹 서버를 사용할 수 있습니다.

각각의 차이 특장점은

  • 스프링 MVC는 동기식 요청-응답 웹 애플리케이션을 위한 프레임워크이며, 전통적인 웹 애플리케이션 개발에 사용됩니다.
  • 스프링 Batch는 대규모 데이터 처리 작업을 위한 배치 프레임워크로, 실시간이 아닌 일괄 작업에 적합합니다.
  • 스프링 WebFlux는 비동기식 논블로킹 웹 애플리케이션을 위한 프레임워크로, 고성능, 고효율의 리액티브 애플리케이션을 개발하는 데 사용됩니다.

'내일배움캠프 > 회고록' 카테고리의 다른 글

8월 23일 금요일  (0) 2024.08.26
8월 22일 목요일  (0) 2024.08.23
8월 13일 화요일  (0) 2024.08.14
8월 12일 월요일  (0) 2024.08.12
8월 9일 금요일  (0) 2024.08.12