[ 작업한 내용 ]
1. DDD 구조 변경을 위해 Book 관련 파일 이동 (Domain-Driven Design)
- DDD 구조의 기본 원칙을 따지기 위해 Book 관련 파일을 book 도메인 하위로 이동시키기로 결정.
- 요구사항에서 관리자, 사용자 둘다 Book 관련 기능 로직이 있다.
- 현재 관리자 요구사항에서 도서 검색/수정/전체 조회/삭제 기능이 있는데 관리자 페이지에서 이루어지는 기능이라서 admin 도메인 하위에서 비즈니스로직을 구현하였는데, Book 관련된 기능인데 이게 맞는지 의문이 들었음.
- 결론은 Book관련 비즈니스 로직은 book 도메인 하위에서 하는게 맞다라는 결론을 내렸다. controller만 admin 도메인 하위에서 관리하는 것으로 정하였다.
1-1) Book.java (entity)
- domain/admin/entity 에서 domain/book/entity 하위로 이동
1-2) BookRequestDTO.java , BookResponseDTO.java , BookSearchReqDTO.java , BookSearchResDTO.java , BookUpdateReqDTO.java
- domain/admin/dto 에서 domain/book/dto 하위로 이동
1-3) AdminBookService.java , AdminBookRepository.java
- 파일명을 변경 (BookService.java , BookRepository.java)
- domain/admin/service, domain/admin/repository 에서 domain/book/service, domain/book/repository 하위로 이동
1-4) BookStatus.java , BookSearchType.java (enum)
- global/enums 에서 domain/book/enums 하위로 이동
2. 도서 전체 목록 조회 기능 추가
- 관리자 요구사항에서 Book 관련된 기능 중 도서 전체 목록 조회 기능을 추가하였다.
2-1) BookListResDTO.java 생성
- 도서 전체 목록 조회를 위한 dto 파일 생성.
- id, title, author, pulisher, publishedDate, location 필드를 가지고 있다.
2-2) AdminBookController.java - 도서 전체 목록 조회 메서드 생성
- Get 형식의 allListBook(int page, int size) { ... } 메서드 생성.
- 파라미터로 page, size
- 각 파라미터는 @RequestParam 어노테이션을 사용하여 defaultValue 값을 0과 10으로 지정해주기.
- 코드 블럭에는 service 계층으로 page, size 데이터를 전달하여 도서 전체 목록을 가져와 Page<BookListResDTO> 타입의 listBooks 변수에 저장.
- return으로 가져온 listBooks를 응답해주기.
2-3) BookService.java - 도서 전체 목록 조회 로직 생성
- Page<BookListResDTO> allListBooks(int page, int size) { ... } 로직 생성.
- 코드 블럭에는 Pageable타입의 pageable을 생성하고 controller 계층으로부터 넘겨받은 page, size를 PageRequest.of()를 통해 데이터를 담는다.
- Page<Book> result에 bookRepository.findAll() 메서드로 pageable을 전달하여 해당 데이터를 찾아 가져온다.
- 가져온 데이터 result는 List<BookListResDTO> 타입으로 하여 .stream().map()을 사용하여 List 형태로 변환해주어 저장한다.
- List 형태로 변환한 데이터를 PageImpl<> 객체로 생성하여 contrller로 전달한다.
2-4) BookRepository.java - 도서 전체 목록 조회 메서드 생성
- Page<Book> findAll(Pageable pageable) 메서드 생성. 스프링 Data JPA가 기본으로 제공해주므로 이렇게 작성.
[ 메모 ]
- 자격증 필기 시험과 부득이한 가정사로 작업을 멈추었다가 다시 시작.
- 앞으로 개발해야할 기능에 대해서 다시 한번 더 정리하고 DDD 구조에 대해서 고민을 하면서 파일 위치를 전체 수정하였다. 어느게 맞는지 명확히 모르지만 나의 생각대로 변경을 했다.
'개발 기록 > 도서관 관리 시스템' 카테고리의 다른 글
[Library Management System] 25.08.26 (29일) (0) | 2025.08.26 |
---|---|
[Library Management System] 25.08.25 (28일) (0) | 2025.08.25 |
[Library Management System] 25.08.20 (26일) (0) | 2025.08.20 |
[Library Management System] 25.08.18 (25일) (0) | 2025.08.18 |
[Library Management System] 25.08.09 (24일) (0) | 2025.08.10 |