[댓글 CRUD 만들기] 14장 | 댓글 엔티티와 리포지토리 만들기
·
CS/스프링부트3 자바 백엔드 개발 입문
게시판에 댓글을 생성, 조회, 수정, 삭제하는 댓글 CRUD 기능을 구현한다. 14.1 댓글 기능의 개요14.1.1 댓글과 게시글의 관계one-to-many(일대다) 관계: 하나의 게시글에 여러 댓글이 달린다. (댓글 입장에서는 다대일) article 테이블과 comment 테이블📍article테이블📍comment 테이블➡️ article 테이블과 comment 테이블이 id 기준으로 관계를 맺고 있다. 대표키(PK, Primary Key, 기본키): 자신을 대표하는 id처럼 자신을 대표하는 속성대표키는 동일 테이블 내 중복값이 없어야 함외래키(FK, Foreign Key): 연관 대상을 가리키는 속성comment 테이블에는 연관 대상을 가리키는 article_id가 더 있다. 외래키를 따라가면 해당..
[REST API와 테스트 코드 작성하기] 13장 | 테스트 코드 작성하기
·
CS/스프링부트3 자바 백엔드 개발 입문
코드 수정 시 문제가 발생하므로 서비스 계층 동작 검증을 자동화 하기 위한 테스트 코드 작성법13.1 테스트란프로그램의 품질을 검증하는 것으로, 의도대로 프로그램이 잘 동작하는지 확인하는 과정테스트 도구 활용해 코드를 검증하기 = 테스트 코드(test code) 작성해 실행하기📍테스트 코드 작성법예상 데이터 작성하기실제 데이터 획득하기예상 데이터와 실제 데이터 비교해 검증하기✅ 작성한 코드가 테스트 통과 시 지속적인 리팩토링으로 코드 개선❎ 테스트 통과 못하면 디버깅(debugging)해서 잘못된 부분을 고치기 테스트 코드로 다양한 테스트 케이스를 작성성공하는 경우와 실패하는 경우 모두 고려성공1, 성공2,,, 실패1, 실패2,,, 와 같이 다양한 상황을 예상해 세부적으로 작성테스트 주도 개발(TDD,..
[REST API와 테스트 코드 작성하기] 12장 | 서비스 계층과 트랜잭션
·
CS/스프링부트3 자바 백엔드 개발 입문
REST API에 서비스 계층을 추가해보고 문제 생기면 트랜잭션을 이용해 롤백하는 방법 알아보기12. 1 서비스와 트랜잭션의 개념✔️ 서비스(service)컨트롤러와 리포지토리 사이에 위치하는 계층으로, 서버의 핵심 기능(비즈니스 로직)을 처리하는 순서 총괄 ✔️ 트랜잭션(transaction) 모두 성공해야 하는 일련의 과정; 트랜잭션 단위로 서비스 업무 처리 진행e.g. 식당 예약에서 결제를 실패하면 이전까지 진행해도 모두 취소되어야 한다. -> 트랜잭션트랜잭션이 실패로 돌아갈 경우 진행 초기로 돌리는 것이 롤백(rollback)!  REST 컨트롤러로 서비스 컨트롤러 확인하기// 컨트롤러 역할: 클라이언트 요청받기@PatchMapping("/api/articles/{id}")public Respon..
[REST API와 테스트 코드 작성하기] 11장 | HTTP와 REST 컨트롤러
·
CS/스프링부트3 자바 백엔드 개발 입문
게시판 데이터를 CRUD 하기 위한 REST API 구현하기11.1 REST API의 동작 이해하기요청 메세지요청 라인: PATCH /posts/1 HTTP/1.1헤더본문응답 메세지상태 라인: HTTP/1.1 200헤더본문REST API 응답 표준으로 사용하는 JSON은 키와 값의 쌍으로 된 속성으로 데이터를 표현한다. JSON 값으로 또 다른 JSON 데이터나 배열을 넣을 수도 있다. REST: HTTP URL로 서버의 자원을 명시하고, HTTP 메서드로 해당 자원에 대해 CRUD 하는 것API: 클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스11.2 REST API의 구현 과정REST API 구현을 위해서는 REST API의 주소인 URL을 설계해야 한다. 1️⃣ 게시판의 A..
[REST API와 테스트 코드 작성하기] 10장 | REST API와 JSON
·
CS/스프링부트3 자바 백엔드 개발 입문
웹 브라우저뿐만 아니라 다른 기기에서도 정보를 요청하고 응답할 수 있게 하는 REST API와 JSON에 관해 알아보기10.1 REST API와 JSON의 등장 배경웹 서비스를 사용하는 클라이언트: 웹 브라우저, 스마트폰, 스마트워치, 테블릿 등서버: 어떤 기기가 와도 기기에 맞는 뷰 페이지를 응답해야 한다 ➡️ REST API 사용하기API(Application Programming Interface): 애플리케이션을 간편히 사용할 수 있게 하는 미리 정해진 약속자판기) 버튼이 하나의 API인데 콜라 버튼을 누르면 콜라가, 사이다 버튼을 누르면 사이다가 나오는 것 - 버튼에 따라 반환될 음료를 미리 약속한 셈윈도우 API: 윈도우 개발을 위해 미리 정해진 약속자바 API: 자바 개발을 위해 미리 만들어..
[게시판 CRUD 만들기] 9장 | CRUD와 SQL 쿼리 종합
·
CS/스프링부트3 자바 백엔드 개발 입문
9.1 JPA 로깅 설정하기서버에서 데이터의 생성, 조회, 수정, 삭제 등을 요청 ➡️ JPA의 리포지토리가 DB에 해당 요청 전달요청을 받은 DB는 자신의 언어인 SQL로 쿼리를 작성해 테이블 속 데이터를 관리✔️ 쿼리(query): DB에 정보를 요청하는 구문생성: INSERT조회: SELECT수정: UPDATE삭제: DELETECRUD 수행에 따른 DB의 SQL 쿼리 분석하기 위해서는 resources > application.properties에서 JPA 로깅 설정을 해야 한다.✔️ 로깅(logging): 시스템이 작동할 때 당시의 상태와 작동 정보를 기록하는 것레벨1 TRACE: DEBUG보다 상세한 정보레벨2 DEBUG: 응용 프로그램을 디버깅하는 데 필요한 세부 정보레벨3 INFO: 응용 프..
[게시판 CRUD 만들기] 8장 | 게시글 삭제하기: Delete
·
CS/스프링부트3 자바 백엔드 개발 입문
8.1 데이터 삭제 과정클라이언트가 HTTP 메서드로 특정 게시글의 삭제 요청삭제 요청을 받은 컨트롤러는 리포지토리를 통해 DB에 저장된 데이터를 찾아 삭제기존 데이터가 있을 경우에만 수행삭제가 완료됐다면 클라이언트를 결과 페이지로 리다이렉트결과 페이지로 리다이렉트 시 RedirectAttributes 클래스 이용해 삭제 완료 메세지도 함께 띄워주기RedirectAttributes 객체의 addFlashAttribute() 메서드 : 리다이렉트된 페이지에서 사용할 일회성 데이터 등록8.2 데이터 삭제하기8.2.1 Delete 버튼 추가하기Delete 버튼을 상세 페이지에 추가하려고 show.mustache 파일에 코드 작성하기Delete8.2.2 Delete 요청을 받아 데이터 삭제하기Delete 요청을..
[게시판 CRUD 만들기] 7장 | 게시글 수정하기: Update
·
CS/스프링부트3 자바 백엔드 개발 입문
7.1 데이터 수정 과정해당 글을 불러옴 ➡️ 수정가능한 입력 상태로 만듦 ➡️ 내용을 입력 ➡️ 다시 전송해 DB에 반영 페이지 만들고 기존 데이터 불러오기에서 [Edit] 버튼 클릭요청 받은 컨트롤러가 해당 글의 id로 DB에서 데이터 찾아옴컨트롤러는 가져온 데이터를 뷰에서 사용할 수 있도록 모델에 등록모델에 등록된 데이터를 에서 보여준다. 데이터를 수정해 DB에 반영한 후 결과를 볼 수 있게 로 리다이렉트폼 데이터(수정 요청 데이터)를 DTO에 담아 컨트롤러에서 받는다DTO를 엔티티로 변환DB에서 기존 데이터를 수정 데이터로 갱신수정 데이터를 로 리다이렉트7.2 만들기1. [Edit] 버튼을 클릭해 Edit 요청을 받을 컨트롤러 만들기➡️ 수정할 데이터 가져오기2. 모델에 데이터 등록하기 : 뷰페..
[게시판 CRUD 만들기] 6장 | 게시판 내 페이지 이동하기
·
CS/스프링부트3 자바 백엔드 개발 입문
6.1 링크와 리다이렉트란페이지 이동을 구현해보기 링크 : 미리 정해 놓은 요청을 간편히 처리 - 보통 페이지 이동을 위해 사용HTML의 태그나 태그로 작성리다이렉트(redirect) : 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 주소를 재지시하는 것리다이렉트를 지시받은 클라이언트는 해당 주소로 다시 요청을 보내고 서버는 결과 응답6.2 링크와 리다이렉트를 이용해 페이지 연결하기6.2.1 새 글 작성 링크 만들기링크를 걸 대상New Article링크 주소와 링크 걸 텍스트 이렇게 입력하면 된다. 6.2.2 리다이렉트 적용해 입력 페이지와 상세 페이지 이동하기return "redirect:URL_주소";@PostMapping("/articles/create")여기의 리턴값이 공백인데, 이곳..
[게시판 CRUD 만들기] 5장 | 게시글 읽기: Read
·
CS/스프링부트3 자바 백엔드 개발 입문
5.1 데이터 조회 과정사용자가 데이터 조회해 달라고 웹 페이지에 URL 요청 보내기서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리포지토리에 전달리포지토리는 정보를 가지고 DB에 데이터 조회 요청 DB는 해당 데이터를 찾아 엔티티로 반환반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달최종적으로 결과 뷰 페이지가 완성돼 사용자의 화면에 출력5.2 단일 데이터 조회하기5.2.1 URL 요청받기DB에 저장한 데이터를 웹 페이지에서 보려면 해당 출력 페이지에 접속해야 하는데 그러기 위해서 URL 요청이 필요하다. 게시글 1번 id 조회 : localhost:8080/articles/1 게시글 2번 id 조회 : localhost:8080/articles/2이렇게 접속하는 식으로 URL 요..