본문 바로가기

반응형

⭐ SpringBoot/𝄜 게시판 with SpringBoot

(31)
22. 댓글 CRUD를 위한 Controller와 Service를 생성 # Commnet 컨트롤러와 서비스를 만들어, 댓글 REST API를 완성 한다. 해당 강의는 다소 복잡 하므로 23.댓글 서비스와 컨트롤러 강의를 참조하여 다시 재정리 해야함. 요약 댓글 CRUD 기능을 REST API로 구현을 하였다. 이를 위해서 RestController를 생성 하였고, 서비스와 협업 할수 있도록 CommentService를 생성하여 구현을 하였다. 이때 서비스는 2개의 레파지토리인 CommentRepository와 ArticleRepository와 협업을 하였다. 추가로 Controller에서 JSON을 받기위해 CommentDto를 생성 하였고, CommentDto안에는 JSON에서 던져진 키값을 @JsonProperty 어노테이션을 통해서 지정할 수 있었다. 추가로 Comme..
21. 댓글 CRUD를 위한 Entity와 Repository를 생성 활용 1. PK와 FK를 활용하여 DB 테이블 조인관계를 설정 2. 새로운 테이블을 생성 3. 더미 데이터를 생성하여 새롭게 생성된 테이블에 저장 4. 저장된 데이터의 예상값과 실제값을 TDD를통해 테스트 # Comment(댓글) 엔티티와 레파지토리를 만들고, 이를 테스트 한다. 요약 댓글 기능을 만들기 위해 comment 엔티티 파일을 생성 하였다. 이 comment 엔티티는 Article 엔티티와 Many to One의 관계를 가지고 있었고, 즉 다대일 관계를 형성 하였고, JoinColumn을 통해 FK를 설정할 수 있었다. 여기서 FK는 외래키, PK는 대표키 이다. 또한 레파지토리에 SQL을 직접 작성하는 방법, 즉 Native Query Method또한 배웠는데 하나는 @Query 어노테이션을..
20. 테스트 TDD # 요약 ArticleService에 있는 여러가지 CRUD 기능들을 테스트로 작성해 보았다. 이러한 테스트는 테스트라는 패키지 폴더안에 위치 하였고, 테스트는 @SpringBootTest와 @Test 어노테이션을 사용하여 진행을 하였고, 테스트의 진행 순서는 예상과 실제와 비교 3단계로 작성하여 진행 되었고, 이러한 테스트는 성공하는 경우의 테스트 뿐만 아니라 실패하는 경우의 테스트도 다양하게 존재 할 수 있다. 더 나아가 성공과 실패 또한 다양한 경우의 테스트 케이스를 생성하여 테스트가 진행 가능 하다. # 기존 Article 서비스를 검증하는 테스트 코드를 작성 하시오. 테스트란? 테스트란 품질 검증을 위한 것으로 우리의 의도대로 프로그램이 동작 하는지를 확인 하는것이다. 테스트를 활용하면 프로그램..
19. Service 계층과 Transaction # 기존 Article의 Rest API 구현에 Service 계층을 추가 한다. 요약 컨트롤러는 클라이언트로부터 요청을 받는것과 응답을 처리하는것에만 집중한다. 서비스는 자기가 맡은 업무의 일반적인 처리 흐름과 그 흐름의 실패했을 경우를 대비한 트랜잭션 관리를 하였다. 트랜잭션에 실패하면 롤백이 된다. 서비스 계층이란? Controller와 Repository 사이에 위치한 계층으로 처리 업무의 순서를 총괄한다. 음식점을 예를 들어보면 웨이터에게 주문이 들어오면 이를 전달받은 쉐프가 요리를 총괄 한다. 이때 요리에 필요한 재료는 보조 요리사에게 가져오게 시킨다. 여기서 웨이터는 컨트롤러, 쉐프는 서비스가 되고 보조 요리사는 레파지토리가 된다. 클라이언트로부터 주문을 받은 컨트롤러는 주문 내용을 서비스에..
18. HTTP RestController # 기존 Article 데이터를 CRUD하기 위한 Rest API를 구현한다. RestAPI RestAPI의 헤더는 편지봉투 이고, Body는 내용 이라고 볼 수 있다. RestAPI의 주소 설계 GET : /api/articles GET : /api/articles/{id} POST : /api/articles PATCH : /api/articles/{id} DELETE : /api/articles/{id} 코드 구현 패키지를 추가한다. Controller 패키지 폴더 레벨에서 api 라는 패키지 폴더를 생성한다. 해당 api 패키지 폴더 안에 클래스를 생성한다. FirstApiController 클래스를 생성한다. 컨트롤러 어노테이션을 @RestController를 입력한다. 일반 템플릿 컨트롤러는 ..
17. RestAPI & JSON # {JSON} Placeholder 사이트를 활용하여 RestAPI의 동작 흐름을 분석 RestAPI를 사용하는 이유 다양한 클라이언트의 등장 현재는 PC뿐만 아니고 다양한 기기들이 존재한다. CCTV 부터 시작해서 스마트 워치, 태블릿, 다양한 센서 등등 기술이 발전하면 할수록 다양한 기기들간의 통신이 이루어 지고 있다. 이러한 IT 기기들의 발전에 따라 수많은 Client기기들이 지금도 만들어지고 있다. 그래서 웹서버는 모든 클라이언트들의 요청에 적절한 응답을 해야한다. 이를 해결하기 위한 개념이 바로 RestAPI이다. RestAPI RestAPI란 웹서버의 자원을 클라이언트에 구애받지 않고 사용할수 있도록 하는 설계 방식으로 HTTP를 통해 서버의 자원을 다루게 하는 기술이다. 이때 서버의 응답..
16. CRUD와 SQL 쿼리 JPA의 Repository를 통해서 손쉽게 데이터를 관리 할 수 있었다. Repository가 요청을 보내면 DB는 자신의 언어 즉 SQL로 작성된 쿼리문을 통해서 데이터를 테이블에 관리 하였다. 실제 쿼리문 확인하기 JPA에서 실행하는 쿼리문을 로깅하여 확인하기 쿼리 로깅은 appication.properties 파일에서 설정한다. #JPA 로깅 설정 #디버그 레벨로 쿼리 출력 logging.level.org.hibernate.SQL=DEBUG #쿼리를 구조적으로 출력하기 spring.jpa.properties.hibernate.format_sql=true #파라미터 보여주기(?로 표시되는 변수 및 파라미터 값을 콘솔 화면에 표시) logging.level.org.hibernate.type.descr..
15. 데이터 삭제 하기 # Article 데이터를 DB에서 삭제하고 이를 확인한다. 진행 흐름 삭제 요청이 전달이 되면 DB에서 찾고 삭제 후 결과 페이지로 리다이렉트 하는 방식으로 진행 삭제 요청이 HTTP를 통해 전달이 되고 이 요청을 받은 컨트롤러가 Repository를 통해 DB에 있는 데이터를 삭제 한다. 단 기존 데이터가 존재 하는 경우에만 삭제 한다. 삭제가 완료 되었다면 결과 페이지로 리 다이렉트 하는걸로 마무리 된다. 이때 삭제가 완료 되었다는 메세지를 띄워주면 좋다. 이것을 구현해주는 클래스가 RedirectAttributes 이다. 삭제 버튼 생성 Delete 버튼 추가 : Delete href 주소로 해당 버튼을 클릭 했을때, 요청을 보내겠다. 라는 의미. 버튼의 색깔을 구분하기 위해 "btn btn-da..

728x90
반응형