-
Notifications
You must be signed in to change notification settings - Fork 132
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
[Spring Core] 김의진 미션 제출합니다. #392
base: sansan20535
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
약간 크게크게 수정을 먼저 드리는 방향이 더 깔끔할 것 같아서 이렇게 리뷰를 적게 남기게 되었습니다
첫 번째는 DAO 와 Repository 의 차이는 뭐라고 생각하시나요?
그리고 그 2가지는 과연 양립이 불가능한 내용일까요?
만약 양립이 불가능하지 않다면 2가지를 모두 적용해보셔도 좋을 것 같고, 불가능하다고 생각하시면 그 이유를 설명해주세요
DAO객체를 몰랐었는데, 이를 알게 되고 DAO가 직접 저장하는 역할을 더 잘 나타낸다고 생각했기에 이를 수정했습니다
2번째는 time 이라는 테이블이 생긴 부분입니다
혹시 time 이라는 테이블을 추가로 두게 된 이유는 무엇일까요?
이렇게 테이블을 분리했을 때 어떤 단점이 있고, 어떤 장점이 있는 것 같으신가요?
3번째는 테스트 격리입니다
현재 테스트 격리 방식은 DirtiestContext
인데요 다른 테스트 격리 방식은 어떤 것들이 있을까요?
이 방식들의 장단점은 어떤 것들이 있을까요?
다른 방식을 적용해보셔도 좋을 것 같아요
이렇게 3가지정도를 한번쯤 고민해보시면 좋을 것 같아요!
저번과 동일하게 approve 를 드리지만, 언제든 수정후 리뷰 요청을 주시면 주시면 될 것 같습니다
- [ ] 스키마 수정 | ||
- [ ] 예약 페이지 파일 수정 | ||
- [ ] 예약 클래스 수정 | ||
- [ ] 예약 쿼리 수정 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요런 부분은 [x] 로 체크 표시를 할 수 있어요
public ResponseEntity<List<ReservationResponse>> getReservations() { | ||
return ResponseEntity.status(HttpStatus.OK) | ||
.body(reservationsService.getReservations()); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저희 회사에서 가장 많이 보는 코드 형태네요 👍
저는 개인적으로 해주신 Service 에서 응답을 만들어주는 것을 선호해요
@NotNull(message = "시간이 비어있습니다.") | ||
Long timeId |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
약간 궁금한 부분인데요
time 으로 받는 것이 아닌 timeId 를 두게 된 이유가 있을까요?
import java.util.List; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class ReservationsService { | ||
|
||
private final JdbcTemplate jdbcTemplate; | ||
private final ReservationDao reservationDao; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아마 요구사항에 dao 와 repository 를 구분하라는 내용이 있었던 것 같은데요 이 부분이 맞을까요? (제가 정확하게 몰라서 잘못 알고 있을 수도 있을 것 같아요)
아니라도 혹시 이 2가지는 어떤 차이가 있다고 생각하시나요?
학습을 위해서 repository 를 여기에 넣어보려고 시도해봐도 좋을 것 같아요!
import java.util.Map; | ||
|
||
import static org.hamcrest.Matchers.is; | ||
|
||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) | ||
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
혹시 이 방법을 제외한 다른 방식으로 테스트 격리를 시도해보실 수 있을까요?
이렇게 했을 때 가장 큰 문제점은 매번 스프링 컨텍스트를 새로 띄우다보니 테스트코드가 엄청 오래 걸리는 문제가 생겨서
테스트의 기본 원칙인 FIRST 원칙의 F 를 지키기 어려울 것 같아요
안녕하세요 리뷰어님!! 잘 부탁드립니다 : )
⭐️ 주요 수정사항 및 고려사항
🧐 Sql문을 이용하여 DB에 저장
🧐 반환 값 및 도메인에 대한 고민