우주먼지
💡 JPA N+1 문제 발생 이유 & 해결법
Error Handling/Java & Spring 2023. 1. 25. 05:36

💡 발생이유 JPA가 JPQL을 분석해서 SQL을 생성할 때 글로벌 Fetch 전략을 참고하지 않고 JPQL 자체만 사용한다. findAll()이 수행되면 해당 엔티티만을 기준으로 조회 쿼리가 생성되고, FetchType으로 지정한 객체를 불러오는 시점에 별도외 조회 메서드를 호출하게 됨으로써 발생한다. 예시 1. Fetch 전략을 Eager(즉시 로딩)으로 한 경우 발생 2. Fetch 전략을 Lazy(지연 로딩)으로 한 경우, 객체 그래프 탐색 시 발생 예시 1의 경우 1. findAll()을 하면 JPQL구문이 생성되고 그 구문을 북석한 SQL이 생성 & 실행됨 2. DB의 결과를 받아 엔티티의 인스턴스를 생성 3. 영속성 컨텍스트에 검색하려는 엔티티와 연관된 엔티티가 있는지 확인 4. 없다면 2번..

article thumbnail
❌[CI/CD] CodeDeploy-Agent Error
Error Handling/Git & IDE 2023. 1. 20. 13:58

💡 CodeDeploy-Agent Error 발생이유 Error: [codedeploy-agent(26028)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile 로그 확인 결과 : /var/log/aws/codedeploy-agent/codedeploy-agent.log 원인: EC2 인스턴스 내부의 IAM 권한 불러오기 실패 해결 CodeDeploy-Agent Restart EC2의 IAM Role이 변경이 된 상태였는데, IAM이 변경되면 Agent를 재시작을 해줘야 권한이 제대로 ..

❌ [CI/CD] Github Actions Build Error
Error Handling/Git & IDE 2023. 1. 20. 12:12

💡 Github Actions Build Error 발생이유 Error 1: Gradle script '/home/runner/work/seb41_main_027/{프로젝트 명}/gradlew' is not executable 원인: 프로젝트 최상단 루트에 gradle 디렉터리 부재 (경로 지정) Error 2: Cannot locate a Gradle wrapper properties file at {경로}. Specify 'gradle-version' or 'gradle-executable' for projects without Gradle wrapper configured 원인: 불명 해결 gradle.yml 파일 수정 Error: 1 해결법: gradle 디렉터리 경로 지정 jobs: build:..

article thumbnail
💡 OSIV 옵션 & 프록시 객체 초기화
Error Handling/Java & Spring 2023. 1. 14. 23:10

💡 LazyInitializationException 발생 발생이유 1. Proxy 객체로 채워진 Entity의 타입캐스팅을 시도할 때 2. 트랜잭션 내부에서 연관관계가 설정된 엔티티의 프로퍼티 접근이 안됬을때 3. 영속성 컨텍스트가 Transaction 범위 밖인 Controller에서 Lazy Loading을 시도할 때 N:1 관계를 예시로, 1쪽에서의 Fetch 전략은 Lazy & N쪽에서의 Cascade 전이 범위는 Persist,Remove 설정 N의 엔티티를 단건 조회했을때 Lazy Loading으로 연관된 1은 바로 초기화가 되지않고, 필요할때 정보가 채워지는 Proxy 객체로 채워진다. 그럼 N의 Request가 Entity로 변환되고 Entity -> Response로 변환이 될때 정상적..

article thumbnail
❌ RedisConnectionFailurException
Error Handling/Java & Spring 2023. 1. 10. 16:41

💡 RedisConnectionFailurException 발생이유 개인 로컬 centos 서버 내에 docker container와의 연동 실패 해결 RedisConfig와 application.yml에서 cluster & node 설정

❌ RedisSystemException
Error Handling/Java & Spring 2023. 1. 10. 15:19

💡 RedisSystemException 발생이유 RedisConfig 내의 Cluster Connect Timeout 시간의 잘못된 설정으로 인한 에러 해결 ResdisProperties내에 세션 타임아웃필드 지정 connectTimeout()내부 로직에 시간값을 가져오는곳에 올바른 시간값 기입 수정 @Component @Getter @Setter @ConfigurationProperties("spring.redis") public class RedisProperties { private String host; private int port; @Getter @Value("${jwt.refresh-token-expiration-minutes}") private int refreshTokenExpirati..

article thumbnail
❌ Git 협업 이후 Commit Failed Error
Error Handling/Git & IDE 2023. 1. 3. 06:53

💡 Change List의 존재로 인한 Commit Failed 발생 이유 IntelliJ의 Code With Me 기능으로 3인 이상 공동작업 후 커밋을 했는데 실패하는 문제 발생 이유는 3명이 각자 다른 클래스 파일을 수정해서 여러개의 Change List들이 생성되었기 때문이었다 해결 다른사람이 리팩터링 한 파일의 Changes List를 내 Changes로 이동 해결법은 하기 첨부된 이미지로 대체합니다

검색 태그