우선 UI가 너무 보기싫어서 대충 그럴싸하게 디자인을 줬고 구현기능이 어느정도 끝나면 다시 이쁘게 수정할 생각이다.
그리고 시작일과 종료일을 추가했다.
시작일은 말 그대로 언제부터 책을 읽기 시작했는지, 종료일은 책을 완독한 날이다.
등록폼은 예정 종료일인데 예정 종료일과 실제 종료일을 가지고 얼마나 예정과 달라졌는지를 나타내고 싶어서 우선은 추가했다.
그리고 총 Page수와 현재 Page 수를 이용해 진행도를 나타냈다.
아직 굳이스러운 기능도 있고 중복기능도 있어 이러한 것들은 개발을 진행하면서 수정할 생각이다.
그리고 이 과정에서 느낀게 DTO의 필요성이다.
책을 등록하는 폼과 책을 수정하는 폼에서의 내용은 서로 다를 수 것이다.
예를 들어, 책을 등록할 때는 책의 제목, 저자, 시작일, 예정 종료일, page수, 현재 읽은 page 수 등이 들어가는 반면에 책을 수정할 때는 사용자가 변경하고자 하는 정보만을 수정할 수 있어야 한다. 예를 들어, 현재 읽은 페이지 수나 상태와 같은 일부 정보만 수정하게 구성했다.
그래서 Book 객체를 등록 폼과 수정 폼에서 둘 다 사용한다면, 수정 폼에서는 수정하고자 하는 정보 외에도 모든 필드를 입력해야 한다는 문제가 있다.이러면 사용자가 불필요한 정보까지 수정해야 하는 번거로움이 있다.
이러한 이유로 수정 폼에서는 변경하고자 하는 정보만을 수정할 수 있도록 해야한다. 이를 위해 DTO(Data Transfer Object)를 사용할 수 있다. 수정할 정보만을 포함한 DTO를 생성하여 수정 폼에서 전달받은 정보만을 이 DTO에 담아 서버로 전송해서 서버에서는 이 DTO에 포함된 정보를 기반으로 실제로 필요한 필드를 수정하면 된다. 이렇게 하면 사용자는 수정할 정보에만 집중하며, 불필요한 정보를 건너뛸 수 있다.
그래서 현재는 DTO들을 만들어서 우선 등록과 수정에 있어서 불필요함을 제거할 생각이다.
DTO들을 만들어서 좀 더 다듬고 추가 기능들을 개발할 생각.
DTO 적용해서 수정 폼에서는 현재 읽은 페이지 수수랑, 종료일, 상태를 수정할 수 있도록 했다.
그래서 수정 결과 진행도, 종료일, 상태만 변경 성공