Scheduler 요구사항 및 필요 요소 정리
- Entity
1. 일정 : 할 일/ 작성자명 / 비밀번호 / 작성일 / 수정일 2. 작성자 : 이름(작성자명) / 이메일 / 등록일(작성일) / 수정일 3. 페이지: 일정 번호 / 페이지 번호2&3. Controller / Service
1. 일정 생성 / POST 2. 전체 일정 조회 / GET 3. 선택 일정 조회 / GET 4. 선택 일정 수정 / PUT(PATCH) 5. 선택 일정 삭제 / DELETE
- Repository
1. 작성자: {{작성자 1}, {작성자2}, ...} 2. 일정: {{일정1}, {일정2}, ...} 3. 페이지:
- Dto
RequestDto: 할 일/ 작성자명 / 비밀번호 / 작성일 / 수정일 ResponseDto: 할 일/ 작성자명 / 작성일 / 수정일
API 설계
- 헷갈리는 점(모호한 개념)
- 일정 등록 시 @RequestBody Schedule schedule 이렇게 넣는게 맞나?
schedule을 받아서 RequestDto로 바꿔주고, 여기서 Password만 빼고 ResponseDto로 변환한 다음 return 값으로 넘겨주는 것이 맞나? 하는 의문 ... 전체 구조와 흐름 복습할 것.
- 정확히는 @RequestBody ScheduleReqeustDto scheduleRequestDto로 받아주는게 맞음. Schedule을 넘겨주는게 아니라 RequestBody 데이터를 Dto로 넘겨주고, 이걸 받아서 처리해줘야함.
- RequestBody 데이터를 받아서, Repository에 저장해주고, 저장할 때 id 자동으로 붙여주고, Repository는 리스트여야함. JDBC를 쓰는 경우 List를 만들지 않고 다른 방법으로 생성했었나? -> 복습 필요
Jdbc를 사용하는 경우 Repository에서 1. 속성으로 JdbcTemplate jdbcTemplate을 설정하고, 2. 생성자로 public MemberRepository(DataSource dataSource) {this.jdbcTemplate = new JdbcTemplate(dataSource);}를 생성하고 3. 기능(메서드)으로 public List< Member > findById(Long id) { String query = "SELECT * FROM MEMBER WHERE id = " + id; return jdbcTemplate.query(query, (rs, rowNum) -> { Member member = new Member(); member.setId(rs.getLong("id)); member.setName(rs.getString("name")); member.setAge(rs.getInt("age")); return member; });}와 같이 Member 객체(Entity)로 리턴해줌.
- 일정 전체 조회 시 수업에서는 id로 조회했는데 과제에서는 1) 수정일 2) 작성자명으로 필터링해 조회하도록 했다.
이때 @RequestParam을 하고 @PathVariable로 받는게 맞나? 아니면 ModelAttribute로 받는게 맞나? 헷갈린다. ... @RequestParam / PathVariable & ModelAttribute 복습할 것
- RequestParam은 URL에서 파라미터를 받아오는 것. 이때 파라미터에 온 값을 @PathVariable로 받아줌. 괄호 안에 넣어준다. 여러 개가 올 경우 여러 개를 받아줄 수도 있다.
- ModelAttribute는 URL에 있는 파라미터가 String, int, Long, Integer와 같은 기본 타입이 아닐 때 요청 파라미터를 받아 필요한 Object로 바인딩 해줌. 주로 HTML 폼에서 전송된 데이터를 바인딩하고 HTTP Method POST인 경우 사용됨. .... 이 방법은 모두 URL에서 파라미터를 받아올 때 쓰는 방법!
- 쿼리 넘겨주는 거 어떻게 했는지 기억이 모호하다. 오늘 배웠는데.. 다시 복습해보자.