Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

경북대 BE_김동현 2주차 과제(1단계) #264

Open
wants to merge 18 commits into
base: donghyuun
Choose a base branch
from

Conversation

donghyuun
Copy link

@donghyuun donghyuun commented Jul 4, 2024

Validation 을 사용하니

검증 메서드를 직접 작성할 필요 없이, 컨트롤러 단에서 미리 유효성을 검증할 수 있어 좋았습니다.
유효하지 않은 경우에 발생하는 에러(MethodArgumentNotValidException)를 @ExceptionHandler 에서 바로 처리할 수 있어 좋았습니다.
폼에서 상품 가격이 아예 입력되지 않았을 경우, int 타입으로 타입 캐스팅 되지 않기 때문에 에러가 발생하였습니다. 따라서 Integer 를 사용하여 해당 경우에 null 로 받아올 수 있도록 하고 @NotNull 을 사용해 아예 값이 입력되지 않은 부분을 검증했습니다.

커스텀 어노테이션을 사용하여 특정 문자열이 포함된 값에 대해 검증하도록 했습니다.
속성으로 문자열을 입력하여 해당 문자열을 포함하는 경우 에러를 발생시키도록 했습니다.

Q
상품 추가 시, 해당 이름을 가진 상품이 DB 에 이미 존재하는지 검증하는 메서드를 다음과 같이 추가하였고, 현재 검증 메서드 내부에서 유효하지 않은 이름의 경우 에러를 발생시키고 있습니다.
검증 메서드 내부에서 에러를 발생시키는게 적절한지, 아니면 boolean 등의 값을 반환하고, 검증 메서드를 사용한 영역에서 에러를 발생시키는게 적절한지 궁금합니다.

public void createProduct(ProductDTO productDTO) {
        validator.validateDuplicateProduct(productDTO.getName());

        String sql = "INSERT INTO product (name, price, image_url) VALUES (?, ?, ?)";

        int rowNum = jdbcTemplate.update(sql, productDTO.getName(), productDTO.getPrice(),
            productDTO.getImageUrl());

        if (rowNum == 0) {
            throw new BusinessException(HttpStatus.BAD_REQUEST, "상품 추가에 실패했습니다.");
        }
    }

@donghyuun
Copy link
Author

STEP0 브랜치에서 STEP1 브랜치를 생성하지 않았어서, STEP1 PR 시 문제가 발생했었습니다.
이를 해결하여 PR에 성공하긴 했지만 커밋 히스토리가 조금 지저분한 점 양해 부탁드립니다ㅠ!

@donghyuun
Copy link
Author

마지막 커밋은 step2 내용입니다. 마지막 커밋 내용부터는 이어서 step2 브랜치에서 작성하겠습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant