[BoostCourse] 프로젝트 5. 예약관리 시스템: 예약하기 (BE)

 

 - 이전 글

 - [부스트코스] 프로젝트 5. 예약관리 시스템: 예약하기 분석 및 설계

 

 

 - 다음 글

 - [부스트코스] 프로젝트5. 예약관리 시스템: 예약하기(FE) 제출 [PASS & Feedback]

 

BE_PJT E-1. 예약관리 시스템: 예약하기

 

 

피드백 요약

 

하단에 작성된 내용은 기능관련 피드백만

1. Service

  • auto seq (key) 기능 사용하기 (ref - link)
SimpleJdbcInsert(docs)

 위 사이트에서 SimpleJdbcInsert라는 내용을 살펴보면

1. SimpleJdbcInsert 클래스 선언

2. setDataSource() 메서드에서 new SimpleJdbcInsert() 클래스 생성

3. withTableName("테이블명").usingGenerateKeyColumns("pk명") chaining 메서드를 통해 필요한 값을 주입

4. AutoGenerated Key 사용할 메서드에서 executeAndReturnKey("파라미터") 메서드를 통해 입력된 값에 대한 Auto-generated Key를 얻을 수 있다.

5. 위 사이트의 예시에서 first_name, last_name을 파라미터로 넣는 이유를 몰랐는데 직접 해보면 테이블에 기본값이 없는 필드는 입력을 해주어야 원하는 key 값을 얻을 수 있다.

 

 위 테이블 보면 product_id, display_info_id, reservation_name, reservation_tel, reservation_email, reservation_date 필드에 "기본값이 없음"을 알 수 있다.

 

ReservationDao.java

 

ReservationDaoTest
ReservationServiceTest.java

위 로그에 132 라는 값을 DB에서 확인

자동증가 132의 값이 리턴되는 것을 알 수 있다.

 


 

현재 프로젝트에 적용되어 있는 클래스는 NamedParameterJdbcTemplate이기 때문에 밑의 내용으로 Generated Key를 구현

 

NamedParameterJdbcTemplate.update 알아보기(docs)

 - update 메서드 중 generatedKeyHolder를 파라미터로 사용하는 메서드가 2개 있다.

 

Issue an update via a prepared statement, binding the given arguments, "returning generated keys".

 

public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)

NamedParameterJdbcTemplate.update(sql, paramSource, generatedKeyHolder)

 

public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, String[] keyColumnNames)

NamedParameterJdbcTemplate.update(sql, paramSource, generatedKeyHolder, keyColumnNames)

 

위 update메서드를 통해 리턴받은 generated key

GENERATED_KEY


2. Controller

  • 파라미터의 null이나 공백("") 체크에 대한 조건식 처리
apache에서 제공하는 라이브러리 사용

 

Maven Library

 

참고 사이트

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

 

 

이후 수정한 내용

 - 기존 세션에 대한 로직을 페이지 요청 컨트롤러에서 모두 처리하여 불필요한 코드를 줄여보았다.

+ Recent posts