-
Notifications
You must be signed in to change notification settings - Fork 201
[5기 이경민, 소승수] Spring Boot JPA 게시판 구현 미션 제출합니다. #266
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
base: voidmelody,-tidavid1---mission
Are you sure you want to change the base?
[5기 이경민, 소승수] Spring Boot JPA 게시판 구현 미션 제출합니다. #266
Conversation
} | ||
|
||
@GetMapping | ||
public CommonResult<Page<PostServiceResponseDto>> getAllPost(Pageable pageable) { |
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.
Pageable 인터페이스는 어떤 파라미터들을 제공하고 있는지 알고 계실까요!?
모든 인자 값을 받야하는 경우가 아니라면 제한적으로 제공하기 위해 별도의 클래스를 활용할 수 있을 것 같습니다.
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.
네. 우선 저희가 활용하는 파라미터가 page와 size 정도이므로 분리해서 활용해볼 수 있을 것 같습니다.
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.
안녕하세요. 경민님, 승수님! 멘토 알입니다.
JPA 게시판 구현을 페어로 진행하셨군요.! 고생하셨습니다.
현재는 문법을 배우는 단계이기도 하지만, 과제는 어느정도의 주관이 들어갈 수도 있습니다.
문법을 사용하여 구현하는 것보다, 이를 활용하는 방법을 고민해보는 것도 좋을 것 같습니다.
✅ PR 포인트 & 궁금한 점
현업에서 해당 과제처럼 Pageable을 활용해서 페이징을 구현하나요?
페이징 구현에 Pageable의 구조를 참고하긴 해도, 이를 그대로 사용하진 않을 것 같습니다.
Pageable 인터페이스를 활용한다면, 인터페이스를 구현한 별도의 클래스를 구현해서 사용할 수도 있을 것 같네요.!
테이블 설계 매핑(연관관계) 관련
제가 경험한 실무에서는 연관관계 즉, fk 기능을 적극적으로 사용하여 테이블을 설계하는 경우는 극히 드물었습니다.
물론 fk 기능을 통해 구현하지 않았을 뿐, 논리적으로는 FK의 의미를 갖는 필드를 갖고는 있습니다.
FK를 통해 데이터의 정합성을 높일 수 있으나, 제약 조건이라는 제한으로 인해 발생할 수 있는 부분들이 운영적인 측면에서 이슈가 되는 부분이 생각보다 큽니다.
- CRUD의 제한
- 부모 테이블 -> 자식 테이블 트랜잭션 관리 영향 전파
- 데이터 마이그레이션 및 백업 시 casecade 문제
더 복잡한 내용이 있을 수도 있지만, 제가 아는선에서는 이렇습니다.!
void tearDown() { | ||
userRepository.deleteAll(); | ||
} |
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.
이 부분은 @transactional이 있어도 필요한 부분일까요?
제거 해서 돌려봤을땐 문제 없이 돌아가는 것 같은데, 어떤 연관이 있는 걸까요?
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.
처음 테스트를 작성했을 때 @Transactional
어노테이션을 적용하지 않고 @AfterEach
를 활용해서 테스트를 처리하는 방식으로 테스트를 작성했는데 이후 @Transactional
적용 이후 사용하지 않는 메소드를 삭제하지 않은 것 같습니다! 수정하도록 하겠습니다!
📌 과제 설명
Sprint Data JPA를 사용한 간단한 게시판
👩💻 요구 사항과 구현 내용
SpringDataJPA 를 설정한다.
datasource : h2 database
회원 (user)
게시글 (post)
회원과 게시글에 대한 연관 관계를 설정한다.
게시글 Repository를 구현한다.
API를 구현한다.
회원 생성
게시글 작성 (POST "/posts")
게시글 조회
REST-DOCS를 이용해서 문서화한다.
✅ PR 포인트 & 궁금한 점
현업에서 양방향 매핑보다는 단방향 매핑을 많이 고려해 사용하는 것으로 아는데, 이에 대한 멘토님의 의견이 궁금합니다.