- 전공 , 교양 시간표 정보는 학교 포털 사이트에 게시된 엑셀 파일을 토대로 DB 에 저장한다.
- 게시된 엑셀 파일의 시간표 정보를 적절하게 파싱하여 DB 에 저장한다.
- 학생은 회원가입을 통해 로그인을 할 수 있다.
- 학생은 원하는 수업을 수강신청 할 수 있다.
- 학생은 수강신청한 수업을 취소할 수 있다.
- 학생은 자신이 수강신청한 과목들을 종합한 시간표를 볼 수 있다. (진행중)
- 수강신청 하려고 하는 과목을 신청 할 때 시간이 겹쳐 신청할 수 없을때 예외가 발생한다.
- 동일한 과목을 수강신청할 수 없다.
- 과목의 정원이 이미 찬 경우 예외가 발생한다.
- 수강신청한 과목의 학점이 총 21점을 초과할 경우 예외가 발생한다.
-
Readme에 어떤 기능을 하는지 작성 필요 (완료)
-
Controller에 swagger 활용을 통한 용도를 명시 (완료)
-
Spring security 를 활용한 로그인 처리 (Spring Security 이해도의 부족으로 공부 후 도입 예정)
-
레포 내 dto 넣지 말기 (완료)
-
Service 명칭 통일 (완료)
-
@Slf4j 로그 어노테이션 혼용 하지 말고, 하나 정해서 쓰자. (완료)
-
Entity 를 직접적으로 프론트에 반환하면 불필요한 데이터가 생길수 있고, 보여지면 안되는 데이터가 노출될 수 있으니 가급적 Dto를 사용해서 변환해서 반환하면 좋다. (완료)
-
CourseApplication에 빈생성 하지말고, config 는 폴더를 만들고 config 클래스 만들어서 빈생성하자. (완료)
-
Restful하게 쓸거면 수강 취소 같은건 deletemapping을 써도 좋지 않을까 (완료)
-> HTML Form에서 GET/POST 만 지원
-> API 를 만들때는 DeleteMapping 을 사용하자 -
LectureStudentRepository의 구현은 다른 방법으로 한것도 보여주고 싶어서 한것이라면 좋지만, querydsl을 더 효율적으로 활용한 코드는 아닌 것 같다.
-> N+1 문제 해결하기 위한 fetch join 쿼리를 Querydsl 이 아닌 순수 JPA 를 활용해 직접 JPQL 을 작성
저장 트랜잭션 처리는 적절히 잘 되어 있다. 다만 조회시에 컨트롤러에 너무 많은 코드가 있어 지저분해보일 수 있고, 용도별로 서비스단에서 함수 구현해서 사용할 수 있으면 좋을 것 같다. (진행중)