스프링부트3
-
13장. 테스트 코드 작성하기 13.1. 테스트란? 최근에는 테스트 도구를 이용해 반복적인 검증 절차를 자동화하고 있다. 테스트 도구를 활용해 코드를 검증한다는 것은 테스트 코드(test code)를 작성해 실행한다는 것이다. 작성한 코드가 테스트를 통과하면 지속적인 리팩터링으로 코드를 개선하고, 통과하지 못하면 잘못된 부분을 찾아 고치는 디버깅(debugging)을 해야 한다. · 테스트(test) - 프로그램의 품질을 검증하는 것 - 의도대로 프로그램이 잘 동작하는지 확인하는 과정 · 테스트 주도 개발(TDD, Test Driven Development) - 일단 테스트 코드를 만든 후 이를 통과하는 최소한의 코드부터 시작해 점진적으로 코드를 개선 및 확장하는 개발 방식 13.2. 테스트 코드 작성하..
[Spring Boot] 13. 테스트 코드 작성하기13장. 테스트 코드 작성하기 13.1. 테스트란? 최근에는 테스트 도구를 이용해 반복적인 검증 절차를 자동화하고 있다. 테스트 도구를 활용해 코드를 검증한다는 것은 테스트 코드(test code)를 작성해 실행한다는 것이다. 작성한 코드가 테스트를 통과하면 지속적인 리팩터링으로 코드를 개선하고, 통과하지 못하면 잘못된 부분을 찾아 고치는 디버깅(debugging)을 해야 한다. · 테스트(test) - 프로그램의 품질을 검증하는 것 - 의도대로 프로그램이 잘 동작하는지 확인하는 과정 · 테스트 주도 개발(TDD, Test Driven Development) - 일단 테스트 코드를 만든 후 이를 통과하는 최소한의 코드부터 시작해 점진적으로 코드를 개선 및 확장하는 개발 방식 13.2. 테스트 코드 작성하..
2024.01.24 -
12장. 서비스 계층과 트랜잭션 12.1. 서비스와 트랜잭션 개념 · 서비스 - 컨트롤러와 리파지터리 사이에 위치하는 계층 - 서버의 핵심 기능(비지니스 로직)을 처리하는 순서를 총괄 · 트랜잭션 - 모두 성공해야 하는 일련의 과정 - 쪼갤 수 없는 업무 처리의 최소 단위 · 롤백 - 트랜잭션이 실패로 돌아갈 경우 진행 초기 단계로 돌리는 것 앞서 작성한 REST 컨트롤러 코드를 보면 컨트롤러의 역할과 서비스의 역할을 동시에 하는 1인 2역 코드이다. 따라서 클라리언트의 요청을 받고 응답하는 컨트롤러의 역할 코드와 리파지터리에서 데이터를 가져오도록 하는 서비스 역할 코드를 나눠서 분리해야 한다. 12.2. 서비스 계층 만들기 먼저 객체 주입된 리파지터리를 서비스로 바꾸고 ArticleService 클래스..
[Spring Boot] 12. 서비스 계층과 트랜잭션12장. 서비스 계층과 트랜잭션 12.1. 서비스와 트랜잭션 개념 · 서비스 - 컨트롤러와 리파지터리 사이에 위치하는 계층 - 서버의 핵심 기능(비지니스 로직)을 처리하는 순서를 총괄 · 트랜잭션 - 모두 성공해야 하는 일련의 과정 - 쪼갤 수 없는 업무 처리의 최소 단위 · 롤백 - 트랜잭션이 실패로 돌아갈 경우 진행 초기 단계로 돌리는 것 앞서 작성한 REST 컨트롤러 코드를 보면 컨트롤러의 역할과 서비스의 역할을 동시에 하는 1인 2역 코드이다. 따라서 클라리언트의 요청을 받고 응답하는 컨트롤러의 역할 코드와 리파지터리에서 데이터를 가져오도록 하는 서비스 역할 코드를 나눠서 분리해야 한다. 12.2. 서비스 계층 만들기 먼저 객체 주입된 리파지터리를 서비스로 바꾸고 ArticleService 클래스..
2024.01.23 -
10장. REST API와 JSON 10.1. REST API와 JSON 등장 배경 웹 서비스를 사용하는 클라이언트는 웹 브라우저 뿐만 아니라 스마트폰, 스마트워치, 태블릿, CCTV, 각종 센서 등으로 다양하다. 따라서 서버는 이러한 모든 클라리언트의 요청에 응답해야 하고 웹 브라우저 뿐만 아니라 어떤 기기가 와도 기기에 맞는 뷰 페이지를 응답해야 하는데, 이것이 REST API가 필요한 이유이다. · REST API (Representational State Transfer API) - 서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식 - REST API 방식에서는 HTTP 요청에 대한 응답으로 서버의 자원을 반환한다. - 이 때 서버에서 보내는 응답이 특정 기기에 종속되지 않..
[Spring Boot] 10. REST API와 JSON10장. REST API와 JSON 10.1. REST API와 JSON 등장 배경 웹 서비스를 사용하는 클라이언트는 웹 브라우저 뿐만 아니라 스마트폰, 스마트워치, 태블릿, CCTV, 각종 센서 등으로 다양하다. 따라서 서버는 이러한 모든 클라리언트의 요청에 응답해야 하고 웹 브라우저 뿐만 아니라 어떤 기기가 와도 기기에 맞는 뷰 페이지를 응답해야 하는데, 이것이 REST API가 필요한 이유이다. · REST API (Representational State Transfer API) - 서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식 - REST API 방식에서는 HTTP 요청에 대한 응답으로 서버의 자원을 반환한다. - 이 때 서버에서 보내는 응답이 특정 기기에 종속되지 않..
2024.01.20 -
9장. CRUD와 SQL 쿼리 종합 서버에서 데이터의 생성, 조회, 수정, 삭제 등을 요청하면 JPA의 리파지터리가 DB에 해당 요청을 전달하고, 요청을 받은 DB는 SQL로 쿼리를 작성해 데이터를 관리한다. 9.1. JPA 로깅 설정하기 · 쿼리(Query) - DB에 정보를 요청하는 구문 데이터 관리 SQL HTTP 데이터 생성(Create) INSERT POST 데이터 조회(Read) SELECT GET 데이터 수정(Update) UPDATE PATCH (PUT) 데이터 삭제(Delete) DELETE DELETE ·로깅(Logging) - 시스템이 작동할 때 당시의 상태와 작동정보를 기록하는 것 9.1.1. 로깅 레벨 설정 + 쿼리 줄 바꿈 + 매개변수 보여주기 src > main > resour..
[Spring Boot] 09. CRUD와 SQL 쿼리9장. CRUD와 SQL 쿼리 종합 서버에서 데이터의 생성, 조회, 수정, 삭제 등을 요청하면 JPA의 리파지터리가 DB에 해당 요청을 전달하고, 요청을 받은 DB는 SQL로 쿼리를 작성해 데이터를 관리한다. 9.1. JPA 로깅 설정하기 · 쿼리(Query) - DB에 정보를 요청하는 구문 데이터 관리 SQL HTTP 데이터 생성(Create) INSERT POST 데이터 조회(Read) SELECT GET 데이터 수정(Update) UPDATE PATCH (PUT) 데이터 삭제(Delete) DELETE DELETE ·로깅(Logging) - 시스템이 작동할 때 당시의 상태와 작동정보를 기록하는 것 9.1.1. 로깅 레벨 설정 + 쿼리 줄 바꿈 + 매개변수 보여주기 src > main > resour..
2024.01.18 -
8장. 게시글 삭제하기 : Delete 8.1. 데이터 삭제 과정 (1) 클라이언트가 HTTP 메서드로 특정 게시글의 삭제를 요청 (2) 컨트롤러는 리파지터리를 통해 DB에 저장된 데이터를 삭제, (기존에 데이터가 있는 경우에만 수행) (3) 삭제 완료 후 클라이언트를 결과 페이지로 리다이렉트 · RedirectAttributes - 결과 페이지로 리다이렉트할 때 클라이언트에 삭제 완료 메시지도 같이 띄워주기 위한 클래스 - RedirectAttributes 객체의 addFlashAttribute() 메서드를 통해 리다이렉트된 페이지에서 사용할 일회성 데이터 등록 8.2. 데이터 삭제하기 8.2.1. Delete 버튼 추가 src > main > resources > template > articles ..
[Spring Boot] 08. 게시글 삭제하기8장. 게시글 삭제하기 : Delete 8.1. 데이터 삭제 과정 (1) 클라이언트가 HTTP 메서드로 특정 게시글의 삭제를 요청 (2) 컨트롤러는 리파지터리를 통해 DB에 저장된 데이터를 삭제, (기존에 데이터가 있는 경우에만 수행) (3) 삭제 완료 후 클라이언트를 결과 페이지로 리다이렉트 · RedirectAttributes - 결과 페이지로 리다이렉트할 때 클라이언트에 삭제 완료 메시지도 같이 띄워주기 위한 클래스 - RedirectAttributes 객체의 addFlashAttribute() 메서드를 통해 리다이렉트된 페이지에서 사용할 일회성 데이터 등록 8.2. 데이터 삭제하기 8.2.1. Delete 버튼 추가 src > main > resources > template > articles ..
2024.01.18 -
7장 : 게시글 수정하기 : Update 7.1. 데이터 수정 과정 7.1.1. 만들고 기존 데이터 불러오기 - 상세 페이지에서 [Edit] 버튼 누르기 - 요청 받은 컨트롤러가 해당 글의 id로 DB에서 데이터 가져오기 - 컨트롤러가 가져온 데이터를 뷰에서 사용하도록 모델에 등록 - 모델에 등록된 데이터를 에서 보여주기 7.1.2. 데이터를 수정해 DB에 반영 후 결과를 볼 수 있게 로 리다이렉트 - 폼 데이터(수정 요청 데이터)를 DTO에 담아 컨트롤러에서 받기 - DTO를 엔티티로 변환 - DB에서 기존 데이터를 수정 데이터로 갱신 - 수정 데이터를 로 리다이렉트 7.2. 수정 페이지 만들기 7.2.1. Edit 버튼 만들기 src > main > resources > template > artic..
[Spring Boot] 07. 게시글 수정하기7장 : 게시글 수정하기 : Update 7.1. 데이터 수정 과정 7.1.1. 만들고 기존 데이터 불러오기 - 상세 페이지에서 [Edit] 버튼 누르기 - 요청 받은 컨트롤러가 해당 글의 id로 DB에서 데이터 가져오기 - 컨트롤러가 가져온 데이터를 뷰에서 사용하도록 모델에 등록 - 모델에 등록된 데이터를 에서 보여주기 7.1.2. 데이터를 수정해 DB에 반영 후 결과를 볼 수 있게 로 리다이렉트 - 폼 데이터(수정 요청 데이터)를 DTO에 담아 컨트롤러에서 받기 - DTO를 엔티티로 변환 - DB에서 기존 데이터를 수정 데이터로 갱신 - 수정 데이터를 로 리다이렉트 7.2. 수정 페이지 만들기 7.2.1. Edit 버튼 만들기 src > main > resources > template > artic..
2024.01.17 -
6장 : 게시판 내 페이지 이동하기 6.1. 링크와 리다이렉트란? · 링크 - 미리 정해 놓은 요청을 간편히 전송하는 기능 - 보통 페이지 이동을 위해 사용 - HTML의 태그 혹은 태그로 작성 · 리다이렉트 - 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 제시 - 분리된 기능을 하나의 연속적인 흐름으로 연결 가능 6.2. 링크와 리다이렉트를 이용해 페이지 연결하기 6.2.1. 새 글 작성 링크 만들기 src > main > resources > template > articles > index.mustache New Article {{>layouts/footer}} # 목록 페이지에 새 글을 작성하는 링크 추가하기 6.2.2. 입력 페이지 To 목록페이지 src > main > ..
[Spring Boot] 06. 페이지 이동하기6장 : 게시판 내 페이지 이동하기 6.1. 링크와 리다이렉트란? · 링크 - 미리 정해 놓은 요청을 간편히 전송하는 기능 - 보통 페이지 이동을 위해 사용 - HTML의 태그 혹은 태그로 작성 · 리다이렉트 - 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 제시 - 분리된 기능을 하나의 연속적인 흐름으로 연결 가능 6.2. 링크와 리다이렉트를 이용해 페이지 연결하기 6.2.1. 새 글 작성 링크 만들기 src > main > resources > template > articles > index.mustache New Article {{>layouts/footer}} # 목록 페이지에 새 글을 작성하는 링크 추가하기 6.2.2. 입력 페이지 To 목록페이지 src > main > ..
2024.01.17 -
5장. 게시글 읽기 : Read 5.1. 데이터 조회 과정 (1) 사용자가 데이터를 조회해달라고 웹페이지에서 URL 요청 (2) 컨트롤러가 요청을 받고 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달 (3) 리피지터리가 정보를 가지고 DB에 데이터 조회를 요청 (4) DB가 데이터를 찾고 엔티티로 변환 (5) 엔티티는 모델을 통해 뷰 템플릿으로 전달 (6) 뷰 페이지가 화면에 출력 5.2. 단일 데이터 조회하기 5.2.1. URL 요청받기 · 게시글 1번 조회 URL : localhost:8080/articles/1 · 게시글 2번 조회 URL : localhost:8080/articles/2 · 게시글 1000번 조회 URL : localhost:8080/articles/1000 src > m..
[Spring Boot] 05. 게시글 읽기5장. 게시글 읽기 : Read 5.1. 데이터 조회 과정 (1) 사용자가 데이터를 조회해달라고 웹페이지에서 URL 요청 (2) 컨트롤러가 요청을 받고 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달 (3) 리피지터리가 정보를 가지고 DB에 데이터 조회를 요청 (4) DB가 데이터를 찾고 엔티티로 변환 (5) 엔티티는 모델을 통해 뷰 템플릿으로 전달 (6) 뷰 페이지가 화면에 출력 5.2. 단일 데이터 조회하기 5.2.1. URL 요청받기 · 게시글 1번 조회 URL : localhost:8080/articles/1 · 게시글 2번 조회 URL : localhost:8080/articles/2 · 게시글 1000번 조회 URL : localhost:8080/articles/1000 src > m..
2024.01.14