Skip to content

jang-namu/course-registration

Repository files navigation

수강신청 사이트 구현하기

기본적인 로직

  1. 전공 , 교양 시간표 정보는 학교 포털 사이트에 게시된 엑셀 파일을 토대로 DB 에 저장한다.
  2. 게시된 엑셀 파일의 시간표 정보를 적절하게 파싱하여 DB 에 저장한다.
  3. 학생은 회원가입을 통해 로그인을 할 수 있다.
  4. 학생은 원하는 수업을 수강신청 할 수 있다.
  5. 학생은 수강신청한 수업을 취소할 수 있다.
  6. 학생은 자신이 수강신청한 과목들을 종합한 시간표를 볼 수 있다. (진행중)

설정한 예외 상황

  1. 수강신청 하려고 하는 과목을 신청 할 때 시간이 겹쳐 신청할 수 없을때 예외가 발생한다.
  2. 동일한 과목을 수강신청할 수 없다.
  3. 과목의 정원이 이미 찬 경우 예외가 발생한다.
  4. 수강신청한 과목의 학점이 총 21점을 초과할 경우 예외가 발생한다.

코드 리뷰 받은 내용

  1. Readme에 어떤 기능을 하는지 작성 필요 (완료)

  2. Controller에 swagger 활용을 통한 용도를 명시 (완료)

  3. Spring security 를 활용한 로그인 처리 (Spring Security 이해도의 부족으로 공부 후 도입 예정)

  4. 레포 내 dto 넣지 말기 (완료)

  5. Service 명칭 통일 (완료)

  6. @Slf4j 로그 어노테이션 혼용 하지 말고, 하나 정해서 쓰자. (완료)

  7. Entity 를 직접적으로 프론트에 반환하면 불필요한 데이터가 생길수 있고, 보여지면 안되는 데이터가 노출될 수 있으니 가급적 Dto를 사용해서 변환해서 반환하면 좋다. (완료)

  8. CourseApplication에 빈생성 하지말고, config 는 폴더를 만들고 config 클래스 만들어서 빈생성하자. (완료)

  9. Restful하게 쓸거면 수강 취소 같은건 deletemapping을 써도 좋지 않을까 (완료)
    -> HTML Form에서 GET/POST 만 지원
    -> API 를 만들때는 DeleteMapping 을 사용하자

  10. LectureStudentRepository의 구현은 다른 방법으로 한것도 보여주고 싶어서 한것이라면 좋지만, querydsl을 더 효율적으로 활용한 코드는 아닌 것 같다.
    -> N+1 문제 해결하기 위한 fetch join 쿼리를 Querydsl 이 아닌 순수 JPA 를 활용해 직접 JPQL 을 작성

저장 트랜잭션 처리는 적절히 잘 되어 있다. 다만 조회시에 컨트롤러에 너무 많은 코드가 있어 지저분해보일 수 있고, 용도별로 서비스단에서 함수 구현해서 사용할 수 있으면 좋을 것 같다. (진행중)

About

Course Registration by Dandy Tiger

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •