[ 작업한 내용 ]
1. 도서 삭제 기능 추가
- DELETE 메소드를 사용하여 /api/v1/admin/books/{bookId} URI로 설계.
- controller 계층에서 deleteBook메서드를 호출해 보낸다. service 계층에서 삭제가 성공적으로 이루어지면 return 값으로 도서가 성공적으로 삭제되었다는 메시지를 보낸다.
- service 계층에 deleteBook 메소드를 생성하고 bookId를 인자로 받는다. 블럭에는 repository에서 findById() 메서드를 호출해 bookId 값을 보낸다음 해당 bookId의 데이터를 가져와 Optional<Book> optionalBook에 담는다. 여기서 Optional을 사용한 이유는 null 예외상황에 대처하기 위함이다. 그 다음 if문을 사용하여 .isPresent() 메서드를 호출하여 optionalBook객체에 값이 비어있는지 체크한 뒤 값이 있으면 repository계층의 .delete() 메서드를 호출해 해당 데이터를 제거한다. 만약 비어있다면 도서가 없다는 예외를 던진다.
[ 메모 ]
1. repository를 생성할 때, JpaRepository를 상속하고 제너릭을 <Book, Long>으로 하면 기본으로 findById 메서드가 생성된다는 것을 알게되었다. 그래서 repository에서 따로 findById 메서드를 생성할 필요가 없었다.
2. Optional은 null 체크를 명확하게하고 , NullPointerException을 방지할 수 있어서 주로 사용한다고 했다.
3. Optional.isPresent()에서 .isPresent()메서드는 Optional 객체 안에 값이 들어있는지 확인하는 메서드라고 한다. true면 값이 있고, false면 값이 없음.
4. Optional<Book> optionalBook 객체를 만들었는데 해당 객체를 제거할 때, repository.delete() 메서드를 호출하는데 메서드 괄호 안에 optionalBook.get()을 작성해야한다. .get()은 실제 Book 객체를 꺼내오는 메서드다.
'개발 기록 > 도서관 관리 시스템' 카테고리의 다른 글
[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.08 (23일) (0) | 2025.08.08 |
[Library Management System] 25.08.07 (22일) (0) | 2025.08.07 |
[Library Management System] 25.08.05 (20일) (0) | 2025.08.05 |