Spring/[P] 도서 대여 프로그램

💚 책 등록하기 💚

alsruds 2023. 12. 12. 21:03
  • Controller → Service →  Repository 

 

📚 Controller

☑️ Postman API 요청으로 책의 데이터 (addBookDto) 가 입력된다

☑️ 책을 등록하는 메서드 (addBook) 가 저장된 service 가 호출된다

@RestController
@RequestMapping("/book")
@RequiredArgsConstructor
public class BookController {
    private final BookService bookService;

    // 책 등록
    @PostMapping()
    public void addBook(@RequestBody AddBookDto addBookDto) {
        bookService.addBook(addBookDto);
    }
}

 

📚 Service

☑️ Book Entity 에서 createBook 메서드로 addBookDto 책 데이터를 입력한다

☑️ Repository 의 save 메서드 기능을 이용해 DB 에 저장한다

@Service
@Transactional
@RequiredArgsConstructor
public class BookService {
    private final BookRepository bookRepository;

    // 책 등록
    public void addBook(AddBookDto addBookDto) {
        // DB 에 책 저장
        Book book = Book.createBook(addBookDto);
        bookRepository.save(book);
    }
}

 

📚 Repository

☑️ JpaRepository 인터페이스를 상속받아, 다양한 메서드를 사용할 수 있다

@Repository
public interface BookRepository extends JpaRepository<Book, Long> {}

 

📚 Entity

☑️ 입력받은 데이터 (addBookDto) 를 토대로 build 한다

☑️ bookStatus : 책을 대출할 수 있는 상태 → 처음 등록 시 대출 가능 (AVAILABLE) 로 설정

☑️ likeCount : 좋아요 개수 처음 등록 시 0 에서 부터 시작

...
public class Book extends BaseEntity {
    ...

    public static Book createBook(AddBookDto addBookDto) {
        Book book = Book.builder()
                .title(addBookDto.getTitle())
                .description(addBookDto.getDescription())
                .bookStatus(BookStatus.AVAILABLE)
                .likeCount(0)
                .build();
        return book;
    }
}

 

📚 Dto

☑️ 클라이언트에서 입력받을 데이터를 담는다

@Getter
@NoArgsConstructor
public class AddBookDto {
    private String title;
    private String description;
}

 

 

💡TEST💡

 

· Postman (데이터 요청)

 

· DataGrip (DB 데이터 확인)