Skip to content

[1기-엄진환] [4주차][SpringBoot Part2] Command-line Application#151

Closed
UJHa wants to merge 52 commits intoUJHa/mainfrom
UJHa/w2
Closed

[1기-엄진환] [4주차][SpringBoot Part2] Command-line Application#151
UJHa wants to merge 52 commits intoUJHa/mainfrom
UJHa/w2

Conversation

@UJHa
Copy link

@UJHa UJHa commented Sep 17, 2021

📌 과제 설명

미션 내용

(기본 과제) 바우처 관리 애플리케이션

  • 바우처 관리 애플리케이션에 단위테스트를 작성해보세요.
    • 가능한 많은 단위 테스트코드를 작성하려고 노력해보세요.
    • 엣지 케이스(예외 케이스)를 고려해서 작성해주세요.
    • Hamcrest 의 메쳐들을 다양하게 작성해보고 익숙해져 보세요.
  • 바우처 관리 애플리케이션에서도 과정에서 다루었던 고객을 적용해보세요.
    • customers 테이블 정의 및 추가
    • CustomerRepository 추가 및 JdbcTemplate을 사용해서 구현
  • (1주차를 파일로 관리하게 했다.) 바우처 정보를 DB로 관리해보세요.
    • 바우처에 엔터티에 해당하는 vouchers 테이블을 한번 정의해보세요.
    • 바우처 레포지토리를 만들어보세요. (JdbcTemplate을 사용해서 구현)
    • 기존의 파일에서 바우처를 관리한 것을 vouchers 테이블을 통해서 CRUD가 되게 해보세요.

(심화 과제) 바우처 지갑을 만들어보세요.

  • 특정 고객에게 바우처를 할당할 수 있습니다.
  • 고객이 어떤 바우처를 보유하고 있는지 조회할 수 있어야 합니다.
  • 고객이 보유한 바우처를 제거할 수 있어야 합니다.
  • 특정 바우처를 보유한 고객을 조회할 수 있어야 합니다.

👩‍💻 요구 사항과 구현 내용

3주차 과제 피드백 구현(링크)

  • c55021e : 피드백 사항 수정

4주차 과제 기능구현

  • 1ced756 : Test 코드 작성해보기
  • e5b131d : Customer 테이블 정의 및 추가
  • 3242d11, 414266a : Voucher 테이블 정의 및 추가
  • fd7a63a, 4f6d03c, 3e33501 : (심화 과제) 특정 고객id로 바우처 생성
  • ae4c81b, 493405d : (심화 과제)find 커맨드로 고객이 가진 바우처 리스트 출력하도록 커맨드 구현
  • 1bd4a9a : (심화 과제)고객이 보유한 바우처를 제거하는 커맨드 구현
  • c95add5 : (심화 과제)find 커맨드로 바우처를 보유한 고객 정보를 조회하는 기능 구현

✅ PR 포인트

  • 3주차 과제 피드백 구현(링크)과 함께 작성했습니다.
  • 피드백 주시면 다음 웹 과제 시에 반영해서 올려도 될까요?

UJHa added 30 commits August 18, 2021 02:16
과제 커밋과 분리를 위해 강의 내용 완료 시점까지의 커밋 작성
UJHa added 22 commits August 31, 2021 05:55
}


private void validate(String name) {
Copy link

@VictoryPark VictoryPark Sep 22, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

validate 를 사용하는 곳이 없는데 왜 선언하신거죠..?🥲
만약 사용하실 거라면,
Wallet 클래스에 맞는 validate 로직이어야 할 것 같습니다.

public class Wallet {
private final UUID walletId;
private final UUID customerId;
private UUID voucherId;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

voucherId 가 final이 아닌 이유가 무엇일까요?

Copy link

@VictoryPark VictoryPark left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

진환님!
전반적으로 강의로 들으신 것들을 잘 활용하여 잘 작성해주셨습니다.

한가지 말씀드리고 싶은 것은
**Operator 라고 선언하신 클래스들 메소드에 @transactional 어노테이션이 있던데,
보통 Service 레이어에서 Transaction 관리가 됩니다.
**Operator는 web 에서 controller와 같은 역할로 구현하셨더라구요.
Service 레이어로 transaction을 뺐을때,

각 Service와 Repository의 의존관계가 조금 달라질 겁니다.
그렇게 수정해서 다시 구현해보셔요!

고생하셨습니다 ㅎㅎ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants