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

[4기 김영명, 김희빈] Spring Boot JPA로 게시판 구현 미션 제출합니다. #240

Open
wants to merge 23 commits into
base: 희빈,영명-mission-제출
Choose a base branch
from

Conversation

kmebin
Copy link
Member

@kmebin kmebin commented Aug 3, 2023

📌 과제 설명

  • Java: 17
  • SpringBoot: 3.1.2
  • datasource : mysql

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

요구 사항

1. 엔티티 구성

  • 회원(User)

    • id (PK) (auto increment)
    • name
    • age
    • hobby
    • created_at
    • updated_at
  • 게시글(Post)

    • id (PK) (auto increment)
    • title
    • content
    • created_at
    • updated_at
  • 회원과 게시글에 대한 연관관계를 설정한다.

  • 회원과 게시글은 1:N 관계이다.

  • 게시글 Repository를 구현한다.

2. API 구현

  • 게시글 생성 (POST "/posts")
  • 전체 게시물 (페이징) 조회 (GET "/posts?page=&size=")
  • 게시물 조회 (GET "/posts/{postId}")
  • 게시글 수정 (PATCH "/posts/{postId}")

3. REST-DOCS를 이용한 문서화

✅ PR 포인트 & 궁금한 점

  1. 전체적으로 생성자 대신 빌더 패턴을 사용했습니다.

    • 파라미터 개수에 상관없이 팀 규칙으로 빌더 패턴으로 통일하는 것이 좋을까요? 아니면, 파라미터 개수의 기준에 따라 생성자와 빌더 패턴을 혼용하는 방식이 좋을까요?
    • 추가적으로 정적 팩토리 메서드를 사용하고 있는데, 아래와 같이 빌더 패턴과 혼용해서 사용하는 방식이 괜찮을까요?
        public static Post create(User user, String title, String content) {
           return Post.builder()
               .user(user)
               .title(title)
               .content(content)
               .build();
       }
  2. Service 테스트 시에 Mockito를 사용했습니다.

    • Mockito 사용을 지양한다면, Service를 테스트 할 방법은 통합 테스트(@SpringBootTest) 밖에 없는건지 궁금합니다.
    • Mockito 대신 FakeRepository를 직접 생성해서 적용하는 방식을 사용한다면, mockito를 사용했을 때의 문제점(any, 외부 라이브러리에 의존 등)을 개선하는 방법이 될 수 있을까요?
  3. 테스트 시 자주 사용되는 객체를 생성하는 Fixture 클래스를 따로 분리했습니다.

    • Fixture 클래스를 따로 사용하는 것이 좋은지, 각 테스트 코드 내에서 명시적으로 생성하는 코드를 작성하는 것이 좋은지 궁금합니다.
  4. 현재는 API 버저닝이 필요하지 않은 상황이기에 적용하지 않았습니다. 이에 대해 전에 훈기 멘토님께서 말씀해주신 것이 생각나서 추가로 질문드립니다!

    • API 버저닝을 함으로써, 버전이 많아질 수록 관리가 힘들어지는 등의 문제가 생길 수 있다고 생각합니다. 버저닝이 필요한 상황일 때 해결할 수 있는 다른 선택지가 있을까요?

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.

None yet

2 participants