프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement 리팩토링과 테스트 코드의 관계리팩토링 : 동일한 입력에 대해 결과의 변경 없이 코드의 구조가 개선되는 것테스트 코드 : 작성한 로직을 테스트하기 위한 코드리팩토링 즉 동일한 입력에 대해 결과의 변경 없이 코드의 구조가 개선되는 것을 확인하는 방법이 테스트 코드테스트코드는 버그가 없는 코드가 아니라 작성한 테스트 코드에 한해 기존과 동일하게 작동한다는 사실만 보장// ProductDto의 생성자를 만들어 주지 않았기 때문에// 아직 다음처럼 ProductD..
프로젝트/clone coding
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement 애플리케이션 실행 환경각 상황에 따른 의존성 주입애플리케이션 로컬 개발 환경(테스트 환경) : ListProductRepository 사용애플리케이션 서버 환경(서비스 환경) : DatabaseProductRepository 사용 인터페이스 의존코드 변경ProductRepository.java : 인터페이스 정의package kr.co.api.product.management.domain;import java.util.List;public interfac..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement DB 리포지토리 생성DatabaseProductRepository.javapackage kr.co.api.product.management.infrastructure;import org.springframework.stereotype.Repository;@Repositorypublic class DatabaseProductRepository { private JdbcTemplate jdbcTemplate; @Autowired pub..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement 데이터베이스 연동DB 생성 SQL상품상품 번호 : 1부터 시작, 추가시 1씩 증가, 동일한 상품 번호 존재 불가상품 이름 : 1~100글자 사이의 문자열, 동일한 이름 상품 존재 불가가격 : 0~1,000,000원 사이의 값상품재고수량 : 0~9,999개 사이의 값// 스키마 목록 보기SHOW DATABASES;// 상품관리 스키마 생성CREATE SCHEMA product_management;// 사용할 스키마 지정USE product_managemen..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement@RestControllerAdvice 유효성 검사 예외 처리예외 클래스도 패키지 이름이 있고, 예외를 처리 할 때는 패키지 이름보다 예외 이름이 더 중요이름은 해당 예외에 관한 힌트를 제공, 상속 관계를 활용하면 모든 예외에 대해 하나하나 처리할 필요 없음도메인 객체 : jakarta.validation.ConstraintViolationException컨트롤러 : org.springframework.web.bind.MethodArgumentNotVali..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement 유효성 검사 위치각 필드별 요구사항상품 번호1부터 시작, 추가시 1씩 증가동일한 상품 번호는 존재 불가상품 이름1~100글자 사이의 문자열동일한 상품 이름 존재 불가 가격0~1,000,000원 사이의 값재고 수량0~9,999개 사이의 값도메인 지식길이, 자료형 등의 도메인 지식도메인 객체 내부에 유효성 검사를 실행 - 도메인지식은 객체 밖으로 빠져 나가지 않는 것이 좋음도메인 지식을 도메인 계층 밖으로 공개하면 중복된 코드 양산, 클래스 응집도 낮아짐서비..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement상품 조회하기상품 번호 기준으로 하나의 상품 조회ListProductRepository.java public Product findById(Long id){ Product foundProduct = null; for (Product product : products) { if (product.sameId(id)) { foundProduct = product; ..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagementDTO와 ModelMapperData Transfer Object : 데이터를 전송하는 역할을 가진 객체클라이언트에게 노출되는 데이터 구조와 백엔드 애플리케이션 내부 데이터 구조를 분리하기 위해 사용DTO 사용 이유도메인 객체를 컨트롤러, 서비스, 레포지토리에서 바로 사용시 도메인 객체의 필드가 변경되면 모든 계층이 영향을 받게 됨(실무에서 데이터 구조가 바뀌는 일은 자주 일어나는 일) 내부적으로 동일한 도메인 객체라 하더라도 상황에 따라 조금씩 다른 데이..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement상품 추가 1. 컨트롤러 만들기 : ProductController.javapackage kr.co.api.product.management;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMet..
프로젝트 개요 : 이것이 취업을 위한 백엔드 개발이다 클론코딩 - 상품관리 애플리케이션프로젝트 환경 : IntelliJ, SpringBoot, MySQL프로젝트 코드 : https://github.com/smkim9202/ProductManagement상품 관리 애플리케이션의 요구사항List로 관리되는 상품을 관리하는 애플리케이션 => DB로 관리되는 상품을 관리하는 애플리케이션상품상품 번호1부터 시작, 추가시 1씩 증가, 동일한 상품 번호는 존재 불가상품 이름1~100글자 사이의 문자열, 동일한 상품 이름 존재 불가가격0~1,000,000원 사이의 값재고 수량0~9,999개 사이의 값상품에 대한 행동상품 추가단건으로 하나씩 상품 추가 상품 조회상품 번호 기준으로 하나의 상품을 조회전체 상품 목록 조회상..