| 서비스컨트롤러와 리퍼지터리 사이에 위치하는 계층서버의 핵심 기능을 처리하는 순서를 총괄합니다.| 트랜잭션모두 성공해야 하는 일련의 과정쪼갤 수 없는 업무 처리의 최소 단위 | 서비스 계층 구현 ArticleService 클래스를 만들어 서비스 계층 구현@Service 어노테이션을 사용해 해당 클래스를 서비스로 인식해 객체를 생성| 게시글 조회 요청 개선앞서 만들었던 findAll()로 return 했던 메서드를 articleService.index() 메서드를 사용해모든 게시글을 조회하는 기능을 만들었습니다. 결과) | 게시글 생성 요청 개선articleService.create()를 호출해POST 요청 메시지에 담긴 데이터를 전달합니다. 삼항 연산자를 사용해 return 문을 수정했습니다 ret..
JAVA
| REST API 구현 과정 조회 요청 : /api/articles 또는 /api/articles/{id}> GET 메서드로 전체, 단일 Article 조회생성 요청 : /api/articles> POST 메서드로 새로운 Article 생성수정 요청 : /api/articles/{id}> PACTH 메서드로 특정 Article 내용 수정삭제 요청 : /api/articles/{id}> DELETE 메서드로 특정 Article 삭제| REST API 구현| REST 컨트롤러와 일반 컨트롤러 차이 REST 컨트롤러 : JSON, 텍스트 데이터 반환일반 컨트롤러 : 뷰 페이지 반환 | GET 구현- 전체 게시글 조회GET 메서드를 사용해 localhost:8080/api/articles 로 요청을 보냈는데 ..
| REST API서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식 HTTP 요청에 대한 응답으로 서버의 자원 반환서버에서 보내는 응답이 특정 기기에 종속되지 않도록 통용될 수 있는 데이터 반환 REST API에서는 서버는 클라이언트의 요청에 대한 응답으로 데이터를 전송합니다.이때 사용하는 응답 데이터는 JSON 파일입니다.| REST API 동작 https://jsonplaceholder.typicode.com/ 접속하여 가짜 API를 사용해 테스트할 수 있습니다. - 단일 데이터 조회 요청 응답데이터 조회를 요청할 때는 method 속성 값으로 GET을 써야 하나GET은 method 속성의 기본 값이라 생략할 수 있습니다. - 데이터 수정 요청과 응답 PUT : 기존 데이터를..
| JPA 로깅 설정properties 파일을 열어 JAP 로깅을 설정했습니다.logging.level.org.hibernate.SQL=DEBUG DEBUG란 로깅 레벨로 7단계가 있는데 그중에서 DEBUG는 레벨 2의 단계이고 출력 레벨을 설정하면 해당 레벨 이상의 로그가 출력됩니다.즉, TRACE(레벨 1)를 제외한 나머지 레벨의 로그가 출력되는 것입니다. | SQL 쿼리 로그 확인 | 데이터 생성 : INSERT 문 1) id 자동 생성 전략 추가 /articles 에서 내용을 입력하고 Submit을 하면 에러가 발생합니다.이는 더미데이터에서 id 1,2,3이 만들어져 있지만 내용 추가를 하게 되면 다시 id 1부터 추가가 되기 때문에 SQL에서 기본키 에러가 발생합니다. @GeneratedVal..
| 데이터 삭제 과정클라이언트가 HTTP 메서드로 특정 게시글의 삭제 요청요청을 받은 컨트롤러는 repository를 통해 DB에 저장된 데이터를 찾아 제기존에 데이터가 있는 경우에만 수행삭제가 완료되면 클라이언트를 결과 페이지로 리다이렉트| 데이터 삭제하기1) Delete 버튼 추가show.mustache 파일에 Delete 버튼을 추가하였습니다. Delete 2) Delete 요청을 받아 데이터 삭제HTTP 메서드의 DELETE 메서드를 써야 하지만HTML에서는 POST와 GET 이외에 다른 메서드를 제공하지 않아GET 방식으로 삭제 요청을 받아 처리 - delete() 메서드 만들기 GetMapping() 어노테이션으로 작성했으며 요청 접수가 오면 처리하도록 했습니다. - 삭제할 대상 가져오기DB에..
| 데이터 수정 과정| 수정 페이지를 만들어 기존 데이터 불러오기1) 상세페이지에 Edit 버튼 만들기show.mastache 파일이 상세 페이지이므로 여기에 태그를 추가해 edit 링크를 추가했습니다. 2) Edit 요청을 받아 데이터 가져오기Edit 요청을 받을 컨트롤러를 연결했습니다.ArticleController.java에 edit() 메서드를 만들었고반환할 수정 페이지인 edit.mustache 파일을 만들었습니다. 그리고 @GetMapping()을 사용해 URL인 articles/{id}/edit을 작성해 연결했습니다.컨트롤러에서 변수 사용은 중괄호 {} 하나인 것을 유의해야 합니다! edit() 메서드에 DB에 있는 기존 데이터를 불러오는 코드를 작성했으며articleReository의 f..
| 링크 (link)미리 정해 놓은 요청을 간편히 전송하는 기능ex) 페이지 이동을 위해 사용 클라이언트가 링크를 통해 어느 페이지로 이동하겠다 요청 시서버는 결과 페이지를 응답합니다. | 리다이렉트 (redirect)클라이언트가 보낸 요청을 마친 후 처리할 다음 요청 주소를 재지시하는 것분리된 기능을 하나의 연속적인 흐름으로 연결이 가능합니다. | 링크와 리다이렉트를 이용해 페이지 연결하기뷰 페이지 템플릿에서 태그를 추가하고 href 속성 값을 활용하여 링크를 걸어주면 해당 기능을 잘 사용할 수 있습니다. 1) 새 글 작성 링크 만들기 2) 입력 페이지 -> 목록 페이지 돌아가기 3) 목록 페이지 -> 상세 페이지 이동하기 4) 상세피이지 -> 목록 페이지 돌아가기
| 단일 데이터 조회하기1) URL 요청받기DB에 저장한 데이터를 웹 페이지에서 보려면 출력 페이지에 접속해야 합니다.그렇게 하려면 URL 요청을 받아야 합니다. @GetMapping("/articles/{id}") @GetMappling() 어노테이션으로 URL 요청을 받도록 했으며URL Id에 따라 /article/1, /article/2 등으로 받기로 했으므로 Id 변수로 받도록 했습니다. 2) 데이터 조회해 출력하기- id를 조회해 데이터 가져오기DB에서 데이터를 가져오는 주체는 Repository입니다. @Autowired 어노테이션으로 구현했으며생성자로 생성 후 메서드 목록을 확인해서 findById(Long id) 메서드를 사용했습니다. findById()는 특정 Entity의 id 값 기준..