브라우저 주소가 /create일 때 실행되는 자바 컨트롤러 메소드를 작성합니다. 아래 코드를 BookController 클래스에 추가해 주세요.src/main/java > com.yse.dev.book > BookController.java@GetMapping("/book/create") public String create() { return "book/create"; } create() 메소드는 브라우저에서 /book/create 주소가 HTTP GET방식으로 입력되었을 때 book/create 경로의 뷰를 보여주는 컨트롤러 메소드입니다.
분명 이 글은 부족합니다. 스프링 부트에 대해 1/10도 채 다루지 않았고, 상황에 따라 더 간략하게 할 수 있는 방법이 있음에도 일부러 일관성을 위해 다듬지 않은 코드도 많습니다.이 글을 쓰면서 원했던 것은 일반적인 스프링 부트 프로젝트 구조가 어떤식으로 이루어지는지 익숙해지는 것이었습니다. 부족한 글이지만 누군가에게는 도움이 되었으면 좋겠습니다.읽어주셔서 감사합니다.
책 상세 화면에서 책 기록 기능 추가하기에서 책 로그가 기록될 영역을 이미 정의했었습니다.src/main/resources > templates.book > read.html 이부분을 다음과 같이 바꿉니다. 다시 서버를 실행하고 http://localhost:8080/book/read/5 에 접속해 보세요.댓글이 잘 나오는지 확인합니다.
책 정보 응답에 책 기록을 포함시키기 위해 BookReadResponseDTO 객체에 책 기록 응답을 담당하는 DTO 인 BookLogReadResponseDTO 객체를 추가합니다.src/main/java > com.yse.dev.book.dto > BookReadResponseDTO.javapublic class BookReadResponseDTO { ... 중략 ... private List bookLogs; public BookReadResponseDTO fromBook(Book book) { ... 중략 ... this.bookLogs = book.getBookLogList().stream().map(bookLog -> ..
책 기록 정보를 클라이언트에 보내주는 책 기록 응답 DTO 객체를 만들겠습니다. 책 기록 응답 객체는 단독으로 사용되는 것은 아니고 책 정보 객체 BookReadResponseDTO의 하위 정보로 쓰여집니다.com.yse.dev.book.dto 패키지에 BookLogReadResponseDTO 클래스를 생성합니다.src/main/java > com.yse.dev.book.dto > BookLogReadResponseDTO.javapackage com.yse.dev.book.dto; import java.time.LocalDateTime; import com.yse.dev.book.entity.BookLog; import lombok.Getter; import lombok.NoArgsConstruc..
JPA에서는 데이터베이스 테이블간의 관계를 나타낼 때 한쪽이 다른쪽만 참조하는 단방향 관계와, 양쪽 다 서로 참조하는 양방향 관계가 있습니다. 우리는 이제까지 BookLog 에서 Book을 참조하는 단방향 관계(Book BookLog)로 개발을 진행해 왔었습니다.하지만 책 정보 조회시 책 기록 조회를 함께 하게 되면서 서로 참조할 필요성이 생겼습니다 (Book BookLog). 기존에 BookLog에서 책 기록을 입력할 때 Book을 참고했었던 단방향 관계에서, 책 정보를 조회할 때 책 기록도 함께 조회하는 양방향 관계가 된 겁니다.RDBMS에서는 무조건 참조하는 쪽에서만 참조가 될 부모행의 ID를 가지고 있었기 때문에 아무런 문제가 없었습니다만, JPA는 ORM이기 때문에 각자 객체에 상대방의 정보..