개발 기록/도서관 관리 시스템

[Library Management System] 25.08.30 (32일)

dev.jelee 2025. 8. 31. 01:09

[ 작업한 내용 ]

1. book 도메인 관련하여 admin, user 분류작업

- DDD 계층 구조를 명확하게 하기 위하여 디렉토리를 전체 수정.

- book.controller.AdminBookController

- book.controller.UserBookController

- book.dto.admin.~~

- book.dto.client.~~


2. 사용자 도서 전체 목록 조회 - 페이징 기능 추가

2-1) UserBookListResDTO

- 사용자가 도서 전체 목록을 조회했을 때 응답받을 DTO를 생성


2-2) UserBookController

- GET 방식으로 page와 size를 RequestParam으로 요청.

- Page 기능을 사용하여 서비스 계층으로 page, size를 전달하여 도서 전체 목록을 Page<UserBookListResDTO> 형식으로 listBooks에 담는다.

- 클라이언트로 listBooks를 반환.


2-3) UserBookService

- controller 계층으로 전달받은 page, size로 Pageable을 사용하여 몇 페이지, 몇 개의 데이터를 가져올지 정한다. 이때 PageRequest.of() 메서드를 사용한다.

- 레포지토를 통해 몇 개의 데이터로 나누었을 때 몇 페이지의 데이터를 DB에서 조회하여 Page<Book> 타입으로 저장한다.

- 조회하여 가져온 데이터는 List<UserBookListResDTO> 타입으로 변환했다가 반환할 때에는 다시 PageImpl<>을 사용하여 Page 형태로 반환한다.


3. 관리자 도서 전체 목록 조회, 도서 검색 조회 응답 DTO 수정

- 관리자는 도서관리를 하기 때문에 도서 전체 목록과 도서 검색을 조회했을 때 응답 받을 데이터는 description을 제외한 모든 데이터를 보는 것이 좋을 거 같아서 수정.


4. 관리자 도서 상세 조회 기능 추가

4-1) 도서 상세보기 메시지 및 성공 코드 추가

- messages.properties

-BookSuccessCode

// messages.properties
success.book.detail=도서 상세보기가 완료되었습니다.

// BookSuccessCode.java
BOOK_DETAIL(HttpStatus.OK, "BOOK_212", "success.book.detail");

4-2) AdminBookController

- GET 방식으로 bookId를 PathVariable로 요청받아 데이터 처리

- 서비스 로직으로 bookId를 전달해 해당 bookId의 데이터를 찾아 responseDTO에 저장.

- 클라이언트로 bookId로 조회하여 가져온 데이터를 반환.


4-3) AdminBookService

- controller 계층으로 전달받은 bookId를 레포지토리를 통해 DB에 접근하여 해당 bookId의 데이터를 가져와 Book 객체에 담는다.

- controller 계층으로 book 데이터를 가지고 AdminBookDetailResDTO객체를 만들어 반환한다.


[ 메모 ]

- 작업은 30일에 하였으나 commit과 push를 늦게해서 31일자로 올라감.

- DDD 구조로 만들기 위해서 명확하게 알지 못하여 수정하는 작업이 많았음.


commit
사용자 도서 전체목록조회(좌), 관리자 도서 전체목록조회(가운데), 관리자 도서 상세조회(우)