사랑하애오
article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 답변 등록
JAVA/SpringBoot CRUD Board 2022. 7. 1. 14:20

앞 절에서 우리는 질문을 조회하는 기능을 만들었다. 이번에는 질문에 답변을 등록하고 보여 주는 기능을 만들어 보자. 질문 상세 화면에 답변을 입력하기 위한 텍스트 창(textarea)과 버튼을 생성하고, 이 버튼을 누르면 답변이 저장되도록 구현해 보자. MySQL 설정 및 연결 원래는 계속 h2-database를 이용하여 진행하여야 하는데, 솔직히 ui나 혹은 서버 재구동해야지만 h2-console을 들어갈 수 있고 그래서 MySQL Workbench를 활용하여 데이터베이스를 옮기려고 합니다. [파일명:/sbb/src/main/resources/application.properties] # MySQL DATABASE spring.datasource.driver-class-name=com.mysql.cj...

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 질문 상세
JAVA/SpringBoot CRUD Board 2022. 7. 1. 13:46

질문 상세 링크 추가하기 먼저 질문 목록의 제목을 클릭했을때 상세화면이 호출되도록 제목에 링크를 추가하자. 질문 목록 템플릿을 다음과 같이 수정하자. [파일명: /sbb/src/main/resources/templates/question_list.html] 제목 작성일시 제목을 엘리먼트의 텍스트로 출력하던 것에서 링크로 변경했다. 타임리프에서 링크의 주소는 th:href 속성을 사용한다. 타임리프에서 th:href 처럼 URL 주소를 나타낼때는 반드시 @{ 문자와 } 문자 사이에 입력해야 한다. 그리고 URL 주소는 문자열 /question/detail/과 ${question.id} 값이 조합되어 /question/detail/${question.id}로 만들어졌다. 이때 좌우에 | 문자없이 다음과 같이..

[VSCODE] SpringBoot CRUD게시판 만들기 - 서비스(Service)
JAVA/SpringBoot CRUD Board 2022. 7. 1. 13:23

이전 장에서 질문 목록을 만들었다. 이제 질문 목록의 제목 링크를 누르면 질문 상세 화면이 보이게 할 것이다. 하지만 기능을 추가하기 전에 잠시 생각할 것이 있다. 우리는 QuestionController에서 QuestionRepository를 직접 사용하여 질문 목록 데이터를 조회했다. 하지만 대부분의 규모있는 스프링부트 프로젝트는 컨트롤러에서 리포지터리를 직접 호출하지 않고 중간에 서비스(Service)를 두어 데이터를 처리한다. 서비스는 스프링에서 데이터 처리를 위해 작성하는 클래스이다. 서비스가 필요한 이유 서비스가 필요한 이유는 무엇일까? 모듈화 예를들어 어떤 컨트롤러가 여러개의 레포지터리를 사용하여 데이터를 조회한후 가공하여 리턴한다고 가정해 보자. 이러한 기능을 서비스로 만들어 두면 컨트롤러..

article thumbnail
[VSCODE] Spring Boot 쇼핑몰 프로젝트
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:12

Spring Boot 를 기반으로 구현한 간단한 쇼핑몰 웹 사이트 GitHub 사이트 프로젝트 진행 과정 목록 🎯 프로젝트 개발 동기 및 목표 스프링, 스프링 부트, JPA, 시큐리티 등의 기술스택들을 이론적으로 학습한 뒤에 실제로 어떻게 동작하는지 이해하기 위해서 간단한 쇼핑몰 프로젝트를 구현해봄. 흔한 쇼핑몰 프로젝트일지라도 완성하는 것에 초점을 두지 않고, 사용되는 기술에 대한 정확한 개념 및 사용법, 그리고 동작원리에 대해서 초점을 맞추었고, 또한 개발 과정에서 맞이하는 에러 및 궁금증들을 자세하게 찾아보고 정리하면서 전체적인 흐름 파악을 목표로 두었으며 프론트보다는 백엔드에 좀 더 집중하였음. ⚙️ 프로젝트 개발 환경 운영체제 : MacOs (Big Sur) 통합개발환경(IDE) : VSCODE..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 장바구니 상품 삭제 & 주문
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:08

장바구니 상품 삭제 1. CartService 장바구니 상품 번호를 파라미터로 받아서 삭제하는 로직 추가 2. CartController 장바구니 상품 삭제 요청을 처리하는 Controller 삭제 요청이므로 DeleteMapping 어노테이션 지정 상품 삭제 요청을 하는 유저와 해당 장바구니 상품의 유저가 일치하는지 검증 3. 장바구니 상품 삭제 요청 장바구니 페이지에서 상품의 X 버튼을 클릭하면 삭제 요청 장바구니 상품 주문 1. CartOrderDto 장바구니 페이지에서 주문할 상품의 데이터를 위한 Dto 자기 자신을 List로 가짐 2. OrderService 장바구니 페이지에서 전달 받은 구매 상품으로 주문을 생성하는 로직 추가 Order.createOrder() 메소드 호출 3. CartSer..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 장바구니 조회
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:06

장바구니 조회 1. CartDetailDto 장바구니 조회 페이지에 전달할 Dto 클래스 CartItem 객체와 비슷함. 따라서 List 에 담겨서 전달됨 2. CartItemRepository 장바구니 페이지에 전달할 CartDetailDto 리스트를 쿼리 하나로 조회하는 JPQL 문 지연 로딩이기 때문에 최적화를 위해서 아래 코드와 같이 DTO의 생성자를 이용하여 조회 결과를 DTO 객체로 변환 후 반환할 수 있음 // select 부분에 new 키워드와 해당 DTO의 패키지, 클래스명을 지정 new com.shop.dto.CartDetailDto(ci.id, i.itemNm, i.price, ci.count, im.imgUrl) // 최적화를 위해 한 번에 반환하도록 List 타입 지정 List f..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 주문 취소하기
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 15:01

주문 취소하기 1. Item Entity 주문 취소 시 상품의 재고를 상품 주문 수량만큼 다시 더해주는 addStock() 메소드를 추가함 2. OrderItem Entity Item.addStock() 메소드를 호출하는 cancel 메소드 추가 주문 상품 수량을 파라미터로 넘김 3. Order Entity 주문 상태를 CANCEL 로 변경 모든 OrderItem 객체의 cancel() 메소드를 수행 4. OrderService 상품을 주문한 유저와 주문 취소를 요청한 유저가 동일한지 검증 orElseThrow 언제 해야되는 지?? 주문 취소 메소드 (변경 감지) 5. OrderController 상품을 주문한 유저가 맞는 지 검증 후 orderService.cancelOrder() 메소드 수행 6. 주..

article thumbnail
[VSCODE] SpringBoot 쇼핑몰(MVN) 구매 내역 조회
JAVA/SpringBoot Shoppingmall 2022. 6. 28. 14:58

구매 내역 조회 1. OrderItemDto 주문 상품 정보를 담을 OrderItemDto 객체 생성 주문 상품 정보 (상품, 수량)와 상품의 이미지를 담고 있음 2. OrderHistDto 주문 정보를 담을 OrderHistDto 객체 생성 주문 정보내에 주문 상품 정보 List 존재 3. 구매 내역 조회 리포지토리 @Query 어노테이션을 이용하여 구매 내역을 조회 SQL 문을 여러줄로 작성 시 마지막에 띄어쓰기 " " 필수 4. 상품 대표 이미지 조회 리포지토리 구매 내역 페이지에서 주문 상품의 대표 이미지를 위한 조회 5. OrderService 주문 목록을 조회하는 로직 (메소드) 추가 동작 구조 및 원리 - order, orderItem Entity 객체를 각각 OrderHistDto, Ord..