백엔드/스프링 부트 3_자바 백엔드 11

14. 댓글 엔티티와 리파지터리 만들기

14.1 댓글 기능의 개요 댓글과 게시글의 관계 | One to Many (일대다, 1:N): 하나의 게시글과 수많은 댓글| Many to One (다대일, N:1): 여러 댓글과 하나의 게시글 기본키테이블에서 자료를 대표하는 속성 대표키기본키 중에서 동일 테이블 내에 중복된 값이 없는 속성 외래키하나의 테이블에서 다른 테이블의 특정 속성과 같은 연관 대상이 있는 경우 이를 가리키는 속성 엔티티DB 데이터를 담는 자바 객체로 엔티티를 기반으로 해 테이블을 생성 리포지터리엔티티를 관리하는 인터페이스로 데이터 CRUD 등의 기능을 제공하는 역할 Comment 엔티티와 Article 엔티티의 관계CommentRepository는 CrudRepository 대신 JpaRepository를 상속JpaReposit..

13. 테스트 코드 작성하기

13.1 테스트란 테스트test, 프로그램이 의도대로 작 작동하는 확인하는 과정으로 프로그램의 품질을 검증 데스트 코드코드를 검증하는 과정테스트를 통과하면 리팩토링 후 코드를 개선하지만, 실패하는 경우 디버깅 과정을 거쳐 오류 수정 i) 예상 데이터 작성하기ii) 실제 데이터 획득하기iii) 예상 데이터와 실제 데이터 비교해 검증하기 테스트 케이스성공, 실패를 모두 고려하여 다양한 경우의 테스트 코드를 대비 테스트 주도 개발Test Drvien Development (TDD), 테스트 코드를 만든 후 이를 통과하는 최소한의 코드를 시작점으로 점차 코드를 개선 및 확장하는 방식 13.2 테스트 코드 작성하기 테스트 코드 기본 틀Service의 메소드에서 오른쪽 마우스를 클릭해 Generate▶Test 선택..

12. 서비스 계층과 트랜잭션

12.1 서비스와 트랜잭션의 개념 서비스Service, 컨트롤러와 리포지터리 사이에 위치하는 계층으로 비즈니스 로직을 처리하는 순서를 총괄하는 역할 트랜잭션Transaction, 서비스 업무 처리의 최소 단위로 모두 성공해야 하는 일련의 과정 롤백Rollback, 트랜잭션이 실패했을 때, 초기 단계로 되돌리는 역할 12.2 서비스 계층 만들기 서비스 객체 생성ArticleService 객체 생성해 articleRepository에 객체 주입public class ArticleApiController { @Autowired private ArticleService articleService;}@Servicepublic class ArticleService { @Autowired pri..

11. HTTP와 REST 컨트롤러

11.1 REST API의 동작 이해하기 JSON키와 값의 쌍으로 된 속성으로 데이터를 표현JSON의 값으로 또 다른 JSON 데이터나 배열을 삽입할 수 있음 RESTHTTP URL로 서버의 자원을 명시하고 HTTP 메서드로 해당 자원에 대해 CRUD API클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스 11.2 REST API의 구현 과정 REST API를 구현하기 위해서는 REST API의 주소인 URL을 설계 필요 | 조회 요청: /api/articles/{id}: GET 메서드로 Article 목록 전체 또는 단일 Article 조회 | 생성 요청: /api/articles: POST 메서드로 새로운 Article을 생성해 목록에 저장 | 수정 요청: /api/articl..

10. RESET API와 JSON

10.1 REST API와 JSON의 등장 배경 REST APIRepresentational State Transfer API, 서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있도록 하는 설게 방식HTTP 요청에 대한 응답으로 서버의 자원을 반환이때, 서버에서 보내는 응답이 특정 기기에 종속되지 않고 모든 기기에서 통용될 수 있는 데이터 반환 APIApplication Programming Interface, 애플리케이션을 간편히 사용할 수 있도록 하는 약속HTTP 요청에 따른 JSON 응답에 대한 약속 10.2 REST API 동작 살펴보기 {JSON} Placeholderhttps://jjjsonplaceholder.typicode.com가짜 API를 사용해 무료로 각종 테스트를 진행할 수 있도..

9. CRUD와 SQL 쿼리 종합

9.1 JPA 로깅 설정하기 JPA자바 객체와 관계형 데이터베이스 간의 매핑을 제공하며 SQL을 직접 작성하지 않아도 데이터베이스 작업을 수행할 수 있도록 도와주는 기술서버에서 데이터 생성, 조회, 수정 등을 요청하면 JPA 리파지토리가 DB에 해당 요청 전달이떄, DB가 SQL로 쿼리를 작성해 테이블 속 데이터를 관리 로깅 레벨 디버그spring.application.name = firstprojectserver.servlet.encoding.force = Truespring.h2.console.enabled = Truespring.jpa.defer-database-initialization = truelogging.level.org.hibernate.SQL = DEBUG 로깅7단계로 구성되어 있으며 ..

5. 게시글 읽기

5.1 데이터 조회 과정 데이터 조회DB에 저장된 데이터를 웹 페이지에 출력하는 과정사용자가 웹 페이지 URL을 요청하면 서버의 컨트롤러가 해당 URL을 찾아 repository에 전달, DB에서 데이토 조회를 요청이후 해당 데이터를 entity로 변환해 뷰 템플릿으로 전달 5.2 단일 데이터 조회하기 URL 요청받기DB에 저장한 데이터를 웹 페이지에서 확인하기 위해서는 해당 출력 페이지에 접속, URL 요청이 필요 컨드롤러조회할 데이터가 Article인 경우 ArticleController에 코드를 추가 @GetMapping( )ULR 요청을 받기 위해 기존 코드 맨 아래에 작성하는 어노테이션괄호 안에는 URL 주소를 입력하고 ULR 중괄호 안에는 사용할 변수를 입력ex) @GetMapping("/ar..

4. 롬복과 리팩터링

4.1 롬복이란 롬복코드를 간소화해주는 라이브러리로 getter( ), setter( ), constructor( ), toString( ) 등 필수 메서드의 반복 작성을 최소하하는 역할로깅 기능을 사용해 프로그램의 수행 과정을 기록으로 남겨 println( )문 개선 4.2 롬복을 활용해 리팩터링 ArticleForm( ) 생성자 간소화// 1. AllArgsConstructor 패키지 자동 임포트import lombok.AllArgsConstructor; // 2. 새 어노테이션 추가@AllArgsConstructor public class ArticleForm { private String title; private String content;/* 3. 생성자 전체 삭제 publi..

3. 게시판 만들고 새 글 작성하기

3.1 폼 데이터란 폼데이터html 요소인 태그에 실려 전송되는 데이터 Data Transfer Object (DTO) 태그에 실어 보내는 데이터로 서버의 컨트롤러가 객체에 담아 받는 것이때, DTO로 받은 데이터는 최종적으로 데이터베이스에 저장 3.2 폼 데이터를 DTO로 받기 뷰 페이지: 뷰 템플릿 페이지https://github.com/smallsilverwest/EWHA.W.UNIV_ECC_FirstSpring/blob/9aa5410c037677d5a56eca5c0b79f53d6e1e1627/firstproject/src/main/resources/templates/articles/new.mustache EWHA.W.UNIV_ECC_FirstSpring/firstproject/src/main/r..

2. MVC 패턴 이해와 실습

2.1 뷰 템플릿과 MVC 패턴 뷰 템플릿화면을 담당하는 기술웹 페이지(View)를 하나의 틀(Template)로 만들고 변수를 삽입해 다양한 페이지 제작 가능스프링 부트 프로젝트 제작 시, Mustache 도구를 추가해 뷰 템플릿 제작 가능 MVC 패턴뷰, 컨트롤러, 모델이 함께 작동할 때, 역할을 나눈 것을 의미 | 뷰: 화면을 담당하며 웹 페이지를 화면에 보여주는 역할 | 컨트롤러: 클라이언트의 요청에 따라 서버에서 처리하는 역할 | 모델: 데이터를 관리하는 역할 2.2 MVC 패턴을 활용해 뷰 템플릿 페이지 만들기 Hello, SSE! 뷰 페이지 (VIEW): 변수 삽입resources > templates에 mustache 파일 작성: 뷰 템플릿 페이지 작성 컨트롤러 (CONTROLLER)..