/jwp-qna

QnA 서비스

Primary LanguageJava

3단계 요구사항 정리

배운점

  • JPA를 학습
    • 관계형 DB와 객체 간 패러다임의 간극을 줄여 준다.
    • sql을 직접 다룰 때 발생하는 문제점들을 해결할 수 있다.
    • 엔티티 매니저가 영속성 컨텍스트를 관리
    • 다양한 연관 관계 매핑 지원

주요 피드백

  • JPA Auditing에 대해 알아보기
  • 인자가 없는 public 생성자의 문제
  • getter,setter의 사용을 지양해야하는 이유?
    • 클래스의 상태를 외부로 노출하는것을 줄임
  • 정적메서드 팩토리사용
  • 객체간 결합도를 낮춰라

기능 요구사항

  • 질문은 hard delete가 아닌 soft delete로 delete 상태값 변경
  • 로그인 사용자와 질문한사람이 같은 경우만 삭제 가능
  • 답변이 없는 경우 삭제가능
    • 답변이 있어도 모든 답변의 답변자가 질문자와 동일한경우 삭제가능
    • 질문을 삭제할 때 답변도 삭제해야하며 답변 또한 soft delete
  • 질문자와 답변자가 다르면 삭제할수 없음
  • 질문과 삭제 이력 정보는 DeleteHistory를 활용

프로그래밍 요구사항

  • 리팩토링 후에도 QnaServiceTest의 모든 테스트는 통과해야함