Spring 실습 1

춤인형의 개발일지·2024년 12월 22일

Spring실습

목록 보기
1/40

24/12/19(목)

🔥책 만들기

⚡할 일:
1) 책 클래스
2) 책 repository
3) 책 service
4) 책 controller

  1. book 클래스 만들기
@Entity
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    String title;
    String author;
    String isbn;
    Integer price;
    Integer publishedYear;

    //기본 생성자도 항상 만들어두자!
    public Book() {
    }

    public Book(
            String title,
            String author, 
            String isbn, 
            Integer price, 
            Integer publishedYear) {
       
    }
  1. 책 repository
public interface BookRepository extends JpaRepository<Book, Long> {
}
  1. 책 service
@Service
public class BookService {
    private BookRepository bookRepository;

    //이거 없으면 null값이다. 생성자 무조건 넣어주기!
    public BookService(BookRepository bookRepository) {
        this.bookRepository = bookRepository;
    }

service에는 꼭 repository를 참조한다.

  1. 책 controller
@RestController
public class BookRestController {

    BookService bookService;

    public BookRestController(BookService bookService) {
        this.bookService = bookService;
    }

    @PostMapping("/api/v1/books")
    public void createBook(@Valid @RequestBody CreateBookRequest request){
        bookService.create(request);
    }

controller 는 service를 참조한다.

  1. 책을 만드는데 검증할 데이터를 만들어준다. (request로)
public record CreateBookRequest(
        @Size(min = 2, max = 50) String title,
        @Size(min = 2, max = 30) String author,
        @Size(min = 13, max = 13) String isbn,
        @PositiveOrZero Integer price,
        @Max(2024) @Min(1900) Integer publishedYear
) {
}

여기서 검증해서 넘어온 데이터들이 create()함수를 만난다. create함수는 service안에 작성해준다.

  1. create함수 작성하기
 public void create(CreateBookRequest createBookRequest){
        bookRepository.save(new Book(
                createBookRequest.title(),
                createBookRequest.author(),
                createBookRequest.isbn(),
                createBookRequest.price(),
                createBookRequest.publishedYear()
        ));
    }

repository에는 기본적으로 사용할 수 있는 save를 사용한다. 사용자의 데이터값을 저장해주는 역할을 한다.

모든 순서는 이렇게 진행이된다. service안에서 직접적인 기능을 하는 repository를 활용할 수 있도록 껍데기를 만들어주고, repository의 기존 함수를 더해 데이터를 활용한다.


😐 느낀점

전체적인 동작을 확인해봤다. 약간 알듯말듯한 느낌쓰
일단 가장 중요한거는 controller는 service를 필요로 하고, servie는 repository를 필요로 한다.
이 구성으로 생성자 주입방식을 사용해서 관계를 맺고, 그 안에서 활용할 수 있도록 한다.

0개의 댓글