일부 대학교에는 신입생 모집기간에 교수님들께서 학교에 직접 방문하여 학생들을 모집하는 절차가 있다. 이 때 교수님들 간 정보공유가 제때 되지 않아, 서로 다른 교수님들이 같은 고등학교에 방문할 수 있기 때문에 때로는 시간이 허비되기도 한다.
이런 불편함을 해소하기 위해 School Visitor(비정식명칭)라는 이름으로 모집관리시스템을 만들고자 한다. 작은 규모의 개인프로젝트로 진행될 것이므로, 아마 BE, FE 둘 다 담당해야할 것 같다!
처음에 말해주신 요구사항은 아래와 같다.
BE : Java, Spring boot, Jwt, JPA(Hibernate), MysqlFE : React위 요구사항들을 받은 후 기능을 추가하여, 작성되어야 할 기능들을 뽑아보았다.
기능을 뽑아내기 위해 인터페이스를 대애애충 이런식으로 나올것이다~하며 작성했으므로 누군가.. 내 꼬질한 인터페이스를 본다면 좀 부끄러울 것 같다.🙂

지역, 키워드, 기간 등을 설정하면 필터링된 학교만 볼 수 있다.


현재 가진 엔티티는 회원, 학교, 방문 엔티티이다.
비교적 작고 간단한 프로젝트이므로 대부분의 백엔드 기능은 구현되었다.
문제는 메인페이지의 목록을 DB에서 한 번에 리스트로 뽑아오기 위해 뇌를 짜내고있는데, 생각했던 방법은 이렇다.
학교와 방문 엔티티 left join을 하고 방문된 컬럼 수를 세면 count 수로 방문되었는지 아닌지 판별할 수 있을 것 같았다.BE기능을 다 완성시키고 나서 FE를 진행하고 싶었는데, 우선 FE 일부 페이지를진행해본 후에 마저 하는것도 기분전환으로 괜찮을 것 같다!😊
혼자하는 프로젝트의 장점
+) 2021-10-05
프로그래머스 mysql문제를 풀다가 '입양 시각 구하기(2)' 문제에 대해 찾아보는데 어떤 블로그에서
union은 지정된 컬럼의 중복을 제거해서 나오는 것이고,
union all은 지정된 컬럼의 중복을 무시하고 모든 컬럼을 표시한다는 정보를 얻었다.
그래서 혹시나 하고 union all로 수정했는데 원하던 결과가 나왔다 ! 이 쿼리를 QueryDSL로 잘 빌드하면 백엔드 관련해서 생각했던 모든 기능들은 마무리된다 👏 !
어딘가에는 더 효율성좋은 쿼리가 존재할거같은데 지금으로서는 잘 모르겠다.
쿼리를 짜면서 버벅거렸던 부분은 다 mysql에 존재하는 예약어들에 대해 잘 모르기 때문인 것 같다.
++) 2021-10-06
union이라는 예약어를 queryDSL에서 지원하지 않는다는 정보를 얻었다...
그래서 native query를 사용하려고 마음먹고, 어제 짰던 코드에 조건문을 추가하려고 했다. 그런데 다시 처음과 같은 상황이 발생했다. [방문]테이블에 '방문일자'조건을 걸면 내가 원하는대로 '어떤 결과에서든 모든 학교가 기본적으로 출력'되어야하는 결과가 나오지 않았다.
약간 상심해서 잠깐 일어나서 바람 좀 쐬다가 다시 자리에 앉아서 차분하게 종이를 꺼내서 내가 원하는 정보들을 낙서처럼 끄적거렸다.

그러다 머리속에서 정리가 되어서 바로 쿼리를 날려보니 원하는 결과가 나왔다.
원하던 것은 학교 전체 목록 + 해당 학교 방문횟수 + 학교 및 지역 키워드 + 방문일자 이다.
방문 테이블에 방문일자 조건을 주고 학교아이디로 그룹화한 목록을 새 테이블로 만들어, 학교와 새로 만든 테이블을 학교 중심으로 left join한 뒤 키워드 조건을 넣어 해결했다.