자바/스프링 삽질 기록(3)
-
상품 테이블과 주문 테이블에 중복된 칼럼이 있는데 왜 그런거죠?
이번에는 웹 장바구니 미션을 진행했다. 장바구니에 물건을 담고, 이를 주문하는 프로세스를 개발하는 미션을 진행했다. 이러한 비즈니스 요구사항 속에서 구성했던 데이터베이스 테이블은 다음과 같다. 얼핏 보기에는 정규화가 안되어있는 모습을 볼 수 있다. orders_item 테이블을 살펴보면 total_price라는 컬럼이 존재한다. 해당 컬럼은 사실 orders_item 테이블의 quantity 컬럼과 product 테이블의 price 컬럼의 값을 곱하면 구할 수 있는 정보이다. 따라서 이는 정규화가 올바르게 되지 않은 모습을 알 수 있다. 그럼에도 불구하고 위와 같이 구성했던 이유는 상품의 정보가 언제든지 바뀔 여지가 있기 때문이었다. 만약 order_item에서 단순히 수량 정보만 가지고 있다면 나중에 ..
2023.06.07 -
int price에 @NotNull을 사용할 때, price가 null이어도 동작한다고?
이번 웹 장바구니 미션을 진행하면서 Validation과 같은 어노테이션을 한번 적용해봤다. Validation Validiation은 어노테이션을 기반으로 어떤 변수의 값을 제한할 수 있도록 돕는다. 이번 미션을 진행하면서는 필드 위 쪽에 Validation 관련 어노테이션을 붙여서 사용했지만 메서드 인자 앞에 어노테이션을 붙여서 사용하거나 리턴값에서도 사용할 수 있다. baeldung에서는 Validation 관련 어노테이션에 대해 아래와 같이 설명하고 있다. @NotNull validates that the annotated property value is not null. @AssertTrue validates that the annotated property value is true. @Size..
2023.04.27 -
Spring에서 @RequestBody로 전달받는 객체의 필드에 final 키워드를 붙일 수 있을까?
앞으로는 미션을 진행하며 피드백을 받거나 궁금했던 내용 중 조금 깊게 찾아봤던 내용들에 대해 한번 글을 작성해보려고 한다.(그래서 잘못 작성된 내용도 좀 있을 수 있다. ㅎㅎ) 그 중 첫번째는 바로 @RequestBody 어노테이션에 관한 내용이다. ㅎㅎ 이번에 웹 자동차 게임 미션을 진행하고 가장 첫번째로 받았던 질문은 다음과 같다. 참고로 위에 내가 한 답변 중에 틀린 내용도 있었다. ㅎㅎ 질문을 받은 코드는 다음과 같다. GameRequest 클래스는 다음과 같이 사용된다. Controller 내부에서 PostMapping을 전달받을 때 사용되는 dto 객체이다. 리뷰어께서 질문 주셨던 부분은 파일 전체적으로 필드 내부에 final 키워드를 사용하고 있지만, GameRequest에서만 final 키..
2023.04.18