HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🍒
[팀10] CherryBoys❤️
/
⌨️
백엔드
/
이슈

이슈

 
  • JPA 부모 둘인 entity 한쪽 부모에서 cascade.all 시 참조 무결성 오류 발생
    • https://velog.io/@woodyn1002/삽질-로그-Hibernate에서-부모가-둘인-Entity의-한쪽-부모를-지우면-참조-무결성-오류가-발생하는-문제
 
  • Querydsl 적용 후 실행 시 'cannot find symbol' 에러
    • https://husheart.tistory.com/160
    • Lombok이 코드를 만들기 전에 QueryDsl 이 먼저 컴파일을 작업하여 롬복이 만들어낼 코드를 찾을수 없다고 에러를 띄운다. 아래와 같이 build.gradle에 Lombok 작업후 QueryDsl 컴파일을 지시하도록 하자
    • plugins에 id "io.franzbecker.gradle-lombok" version "3.0.0" 추가
// build.gradle 추가 project.afterEvaluate{ project.tasks.compileQuerydsl.options.compilerArgs =[ "-proc:only", "-processor", project.querydsl.processors()+ ',lombok.launch.AnnotationProcessorHider$AnnotationProcessor' ] }
testCompileOnly("org.projectlombok:lombok") testAnnotationProcessor("org.projectlombok:lombok")
⇒ 됐다가 안됨;;
⇒ IntelliJ gradle 버전과 프로젝트 gradle 버전이 달라서 생긴 문제였다. → gradle/gradle-wraaper.properties의 버전을 수정 7.2→7.3으로 맞춰주니까 괜찮다
 

멘토님 미팅 피드백

  • 주소
    • 테이블 → Address 테이블 만들고, 시도 / 시군구 / 구장 이렇게 구분할 수 있도록 필드 하나를 더 만들기
    • 네이티브 쿼리로 (객체지향적이지 않음)
    • 객체지향 포기하지 않으려면 attributeconverter 사용 - 특정 필드 핸들러
      • https://www.baeldung.com/jpa-attribute-converters
  • 파일 업로드
    • API를 두 개로 분리 - 하나는 파일업로드 / 정보 따로 만들기(나중에!)
  • 생성할 때는 key 내려주는게 좋다
  • 토큰 없을 때 만들어 놓는 API는 토큰을 가짜로 만들어놓아보자
  • 어노테이션 적게 쓰자 → @Transactional을 클래스 단위로, readOnly 필요한 메서드만 적용
  • assertThat(객체).extracting("").isEqualTo();
  • 테스트코드를 400 예외 → 파라미터가 터트리는 ex) 팀이름 null이라던지, 길이 오버된거, sports string 터지는 것
  • 컨트롤러 테스트는 성공 위주로, 200만 봐도됨
 
 
  • MySQL 8버전 이후로 groups 키워드 생겼음 (더 찾아봐야됨) → 그래서 테이블 생성이 안됨 → 테이블명 바꾸기
 
  • 순환참조 문제
    • User - TeamUser 간 순환참조 문제 발생
    • 해결 : 한 곳의 서비스에서 다른 곳의 서비스를 주입받지 않고 바로 repository를 주입받도록 함
    • 다른 해결 방법은?
      • 타 팀에서는 순환 참조 문제를 Service 레이어 계층을 하나 더 만들어서 해결했음
 
  • LazyInitializationException 문제
    • JPA 관리 범위 밖( @Transactional 밖) 에서 LazyLoading 대기 상태이던 필드에 접근할 때 발생
      • @Transactional
         
    • ⇒ repository에서 값을 가져올 때 fetch join 해서 가져온다
    • 다른 해결방법이 있을까?
    •  
  • TeamUser ←→ User N:1 양방향 매핑에서, TeamUser를 제거할 때 User.getTeamUsers.remove(this) 해줘야할지, 안해도되는지?
 
  • 팀 해체 시 HirePost(용병 게시글), TeamUser(팀원), Match(매칭) 에 대해 모두 영향이 가도록 설정했다.
    • 다른 부분은 괜찮지만, HomeTeam, AwayTeam 으로 참여한 모든 Match 기록이 제거된다.
    • 만약 cascade를 지운다면, 기존 로직에서 .getHomeTeam() 이나 getAwayTeam()에 대한 처리를 해주어야 한다.(공수-비용 필요)
 
 
  • 배포 후 post 나 PUT 요청시 403 에러
    • notion image
      로컬에서는 정상 작동하였지만 배포 서버에서는 get을 제외한 http method 요청시 403
    • 원인 :
    • 해결 :
    • HttpSecurity.requestMatchers(CorsUtils::isPreFlightRequest) .permitAll()