이전에 스프링과 MyBatis를 사용하여 웹 개발을 해 본 경험이 있었다. 그때도 JPA에 대한 것을 찾아보긴 했는데 같이 하는 팀원들이 모두 웹 개발을 거의 처음 접하는 상태였고 배워가면서 하나하나 해 가는 상태였기 때문에 JPA는 건들여보지 못했었다. 그런데 이번 프로젝트에서는 JPA를 사용하기로 해서 따로 공부를.. 열심히 해봤다. 책도 사고.. 구글링도 엄청 열심히 하고..
공부한 내용을 따로 정리해야 할 텐데 일단은 개발 에러부터 까먹지 않도록 정리하려 한다.
JPA를 이용하여 값을 받아올 때, Repository가 NullPointerException이 났다. 나는 분명 @RequiredArgsConstructor 어노테이션을 붙여놨는데.. 그래서 Repository위에 @Autowired를 추가하니 되었다. (대체 왜???)
---> @RequiredArgsConstructor 는 final로 선언하거나 not null(맞나?) 인 변수만 주입해준다.... 그러니까 당연히 주입이 안되지ㅠㅠ 그래서 Repository를 final로 선언해주니 @Autowired를 추가하지 않아도 잘 주입되는 걸 확인했다.
그리고나니 아니.. 계속 반환되는 결과가 없는 것이다. 쿼리문을 로그로 출력하게 해놨는데 출력도 되지 않고.. 멘붕와서 어제 새벽 내내 찾아보다가 결국 해결못하고 다음날 다시 천천히 들여다 보는데, Repository에서 이클립스에서 제공하는 override를 사용해서 필요한 기능을 추가해놨는데 다시 보니 이게 default로 선언이 되어 있는 것이다..! (사실 코드의 변경이 없어서 굳이 내용을 추가하지 않아도 무방한데 내가 그냥 헷갈려서 추가했던..) 그래서 이걸 다시 public으로 바꾸고 나니... 너무나 잘 되었다.... 이런 바보같은 에러는 언제쯤 안 내려나...ㅎㅎ
후.. 조인 구현하는 거 너무 어려웠다. 막상 하고 나니 별 거 아닌데.. 맨 땅에 헤딩하려니 좀 힘들더라..
보통 JPA로는 복잡한 조인은 구현하지 않고 querydsl을 같이 이용한다고 하는데 querydsl은 따로 의존성을 추가해야 되고 아우... 뭔가 또 새로 배워야 해서 일단 JPA와 JSQL을 이용해서 구현했다. 두개테이블은 N+1 문제도 @EntityGraph로 해결을 했는데 세 개 테이블을 조인할 때 (휴..) 는 N+1 문제는 고려하지 못하고 일단 구현했다.
성능에 문제가 생긴다면 이 부분을 따로 손봐야 한다.
협업은 어렵다..
pull request는 그때그때..
나중에 합치려면 머리 터진다..
미리 각자 뭘 짤 지 얘기하는 게 좋을 것 같다..
오늘의에러..
org.apache.commons.fileupload cannot be resloved
검색하니까 org.apache.commons cannot be resolved 만 잔뜩 나오길래 근데 뭐 거기 포함되어 있는 게 아닐까 하고 jar 파일 다운받아서 하라는 대로 했는데 안되는 것이다.. 멘붕.. 이것저것 계속 찾아보다가 혹시 jar 파일이 다른가 하고 org.apache.commons.fileupload jar download 검색하니 새로운 게 나온다....! 하..
그래서 그 파일 다운받아서 java build path에 추가하니 엑스표시가 드디어 사라졌다..
근데 더 웃긴건... 이 라이브러리 안쓰더라... 내가 짠 코드가 아니라 그냥 엑스표시 나길래 무작정 없애야지 했는데... 안쓰는 라이브러리였어....ㅠㅠㅠㅠㅠㅠㅠㅠ
'프로젝트 > 캡스톤 디자인 프로젝트' 카테고리의 다른 글
얼굴 인식 모델 fine-tuning을 위한 데이터 수집 (크롤러 개발 + 전처리) (0) | 2022.05.14 |
---|---|
비디오에서 frame을 추출해서 얼굴 인식 모델에 넣어보자 (1) | 2021.11.20 |