spring 35

RESTful 웹 서비스 구축 - @PutMapping / @DeleteMapping

PutMapping 은 수정하기 인데, 왜 CREATED 가 있는것인지,여기서 @Valid 는 @RequestBody 만 @Valid 하는 것인지, 아니면 @PathVariable 까지 포함해서 @Valid 하는 것인지.book.set~~() 을 해서 수정되는 데이터를 교체해줬는데, 왜 book=bookService.save(book); 을 해주는것인지,그리고 save 를 해주게 되면, id 값은 새롭게 부여되는것인지,아니면 id 값은 그대로 있고 @PrePersist 인 createdAt 의 값만 LocalDateTime.now() 를 받아서새롭게 부여되는것인지가 궁금해. 질문에 대한 답변:1. @PutMapping과 HttpStatus.CREATED의 조합:**@PutMapping**은 일반적으로 리..

RESTful 웹 서비스 구축 - @PostMapping / @RequestBody / swagger

entity, repository, service 까지 만들었다.첫번째로 만들어볼 REST API 는, 책 데이터를 저장하는 REST API를 만들어볼 것. 저장은, 기본적으로 POST, @PostMapping 이다. 요청은 /api/books 로 하겠다.요청을 처리하려면 Controller 를 만들어야 한다.@RestController 와 @RequestMapping("/api") 를 붙여준다.@Tag 는 Swagger 에 표시되는 걸 정할 수 있다고 했다. 1. 클래스 선언부@RestController이 클래스가 REST API의 엔드포인트를 제공하는 컨트롤러라는 것을 의미합니다.@Controller와 @ResponseBody가 합쳐진 형태입니다. 반환하는 값은 HTTP 응답의 바디에 직접 들어갑니다..

RESTful 웹 서비스 구축 - @PrePersist / DTO 구분 (Entity, Payload, View)

REST 프로젝트를 MVCS 구조, 3-tier 구조로 만들어보고자 한다. createdAt 같은 경우에는, 우리가 직접 값을 입력하는게 아니라 DB에 데이터가 insert 가 될 때, 날짜는 자동으로 입력이 되도록 하기 위해서 @PrePersist 라는 어노테이션을 붙이면 Book 이라는 객체가 만들어져서 데이터가 DB table 에 들어갈 때 미리 @PrePersist 라는 어노테이션 부분이 실행이 된다. onCreate() 메소드가 실행이 될 것이라, 날짜를 우리가 입력하는게 시스템에서 직접 입력이 될 수 있도록 해주면 된다. protected 라고 했지만, public 이라고 해도 문제는 없다.1. @PrePersist의 의미PrePersist 는 "저장 전에" 라는 뜻을 가진 영어 단어입니다.P..

RESTful 웹 서비스 구축 - @RestController / MySQL / Swagger-ui

지금까지는 H2 DB를 사용했었는데, 이제는 MySQL DB를 사용한다.설치하고 오자. community -> MySQL 8 버전, workbench 가 포함된 걸로 설치하자. @RestController- Spring MVC는 @RestController 을 사용해서 RESTful 서비스 구축을 지원한다.Spring MVC의 RESTful 서비스에는 일반적으로 다양한 HTTP 메서드 (GET, POST, PUT, DELETE 등)에 해당하고특정 URI (Uniform Resource Identifiers, URI 와 URL 은 같은 개념으로 이해) 에 매핑되는 엔드포인트 생성이 포함된다. @RestController - vs - @Controller- 큰 차이는 없다, 클라이언트의 요청이 오면 처리를 ..

Spring Boot - # Project 03 - Spring 의 데이터바인딩 / html - form / @RequestParam

리뷰 작성하는 것,그리고 반영되는 것,hibernate가 sql 해주는 것,모두 확인을 마쳤다.하지만 아직도 이해가 잘 안 되는 부분, 조금 애매하게 이해한 부분들을 추가로 더 공부해보겠다.    Review 라는 객체는 id, content, rating, createdAt, book 이라는 멤버를 가지고 있어. book 은 ManyToOne 으로 Book 객체랑 연결이 된것이지만. 그리고 id 는 자동으로 증가하는 상황이야. GeneratedValue. 그런데, 여기서, 리뷰 및 평점 쓰기 부분에서, content랑 rating은 입력하는 것이 form 에 있는데, createdAt 은 내가 구현을 하지 않은 것 같은데 어떻게 된거지? 그리고 book은 자동으로 연결이 되는건가? 리뷰 및 평점 쓰기 ..

Spring Boot - # Project 03 - Bootstrap / @PostMapping

detail.html 을 만들어야 한다. template.html 을 복사붙여넣기 해서 detail.html 로 이름을 변경해주자.기존 template.html 코드는 아래와 같다. MainContentSection 부분을 손보면 되겠다. - 상세보기,- 리뷰목록,- 리뷰 및 평점 쓰기,- 리스트로 돌아가기(root page로 돌아가기) 을 만들자.여기서부터는, html 을 공부해본 적이 없기 때문에 강의에서 알려주는 걸 일단은 따라해보고, chatGPT의 도움을 받아서 이해를 많이 해보고 공부해보려고 한다. 상세보기 ..

Spring Boot - # Project 03 - 웹 버튼 클릭 /

자, 이제 View Details 버튼을 누르면 작동되도록 해보자. home.html 을 확인해보자.1. HTML 기본 구조HTML은 HyperText Markup Language의 약자로, 웹페이지의 구조를 만들 때 사용되는 언어입니다.HTML은 태그로 구성되며, 각 태그는 여는 태그 와 닫는 태그 로 나눠집니다.내용여기서 는 **"division"**의 약자이며, 컨테이너(묶음) 역할을 합니다. 즉, 는 다른 요소들을 그룹화하기 위해 사용됩니다.2. class 속성class는 CSS나 JavaScript에서 특정 요소를 선택하거나 스타일을 적용하기 위해 사용되는 속성입니다.하나의 클래스 이름에 여러 요소를 부여할 수 있고, 하나의 요소에 여러 클래스 이름을 붙일 수도 있습니다.예시:여기서 class=..

Spring Boot - 자동 구성 사용자 정의 / # Project 03 - 1:N (OneToMany) DB/Entity Modeling

application.properties 를 yml 로 바꿔보겠다. properties 대신에 yml 을 쓰면 된다.내부 코드가 자동으로 바뀌는 건 아니라서 yml properties 컨버팅 사이트에서 바꿔서 복붙해주자. @Entity 클래스가 가지고 있는 멤버의 변수 이름이 table 열의 이름으로 바뀔 때, 카멜 케이스 표기법에서 스네이크 케이스 표기법으로 자동으로 바뀌는 설정이 되어 있다고 했었다.그런데, 그냥 @Entity 클래스의 멤버의 변수 이름을 그대로 table 열의 이름으로 사용하고 싶다면, 간단하게 설정을 추가해주면 된다.yml 파일에서는 저렇게 추가하면 된다.만약 properties 파일이었다면,spring.jpa.hibernate.naming.physical-strategy=org..