본문 바로가기

memo/기록5

jpa 성능 최적화하기2 (update VS delete) 이전 글과 같은 상황에서, Ask를 삭제한다고 해보자. 이때 AskImage, Comment는 cascade = ALL 로 지정되어 있어서 Ask를 JPA의 CrudRepository를 사용하여 삭제한다면 AskImage, Comment가 자동으로 모두 삭제된다. @Entity public class Ask{ //... 중략 @OneToMany(mappedBy = "ask", cascade = ALL) private List askImages = new ArrayList(); @OneToMany(mappedBy = "ask", cascade = ALL) private List comments = new ArrayList(); } 그런데 만약 Ask가 2개의 이미지를 가지고 있고, 3개의 코멘트를 가지고 .. 2023. 3. 4.
jpa 성능 최적화하기1 (하나의 엔티티에 두개의 toMany 연관관계) 한명의 User가 여러개의 Ask를 작성할 수 있고, 하나의 Ask는 여러개의 이미지와 여러개의 Comment를 가질 수 있다. Ask를 조회하는 API가 있는데, 해당 API 의 응답 객체는 Ask데이터, User 데이터, Ask의 이미지들(AskImage), Ask의 Comment들을 모두 필요로 한다. 이를 Ask Id를 가지고 조회하는 QueryDsl 코드는 다음과 같다. Ask ask = queryFactory .selectFrom(ask) .where(ask.id.eq(askId)) .fetchOne(); 하지만 이렇게 하면 Ask의 User, AskImage, Comment들은 모두 Lazy로 설정되어 있기 때문에 이들을 불러오는 쿼리가 발생한다. 즉 Ask select, User selec.. 2023. 3. 3.
AWS LAMBDA with Node.js 노드로 올릴때 올린 zip 파일이 커서 문제였다. 전에 작은 코드를 올릴때는 (토큰 서비스) AWS가 제공하는 람다 콘솔을 통해 코드를 직접 수정할 수 있어서 상관없었는데, 이미지 서비스를 람다로 만들때는 코드가 크다며 AWS 콘솔 창에서 코드 에디터를 보여줄 수 없단다. 근데 내가 zip을 올렸는데 자꾸 어떤 라이브러리가 없네 마네 하며 실행되지 못했다. 나는 분명 다 묶어서 올렸는데!!! 근데 아래 명령어를 사용하여 해결하였다. zip -r image-lambda.zip index.js node_modules .env 위 명령어는 index.js, node_modules, .env 들을 image-lambda.zip 의 zip 파일로 압축해달라는 것이다. 그런데 -r 옵션이 붙어있는데, 이는 하위 폴.. 2023. 2. 22.
Querydsl join시 해당하는 ID를 찾을 수 없습니다. 인스타그램식의 게시판을 만들던 도중 희한한 에러가 발생했다. 사진, 내용, 태그가 포함된 게시글을 올리고 작성된 게시글을 확인하려고 하면 해당하는 ID의 게시글을 찾을 수 없다느 오류가 발생했다. DB 테이블을 확인하면 분명 모두 제대로 저장되었고, 내가 프론트에 준 ID도 DB에 저장된 아이디도 그대로였다. 그런데 테스트를 다시 해보니 1개의 사진이 올라간 게시글만 위와 같은 에러가 발생했고, 2개 이상의 사진이 포함된 게시글은 그대로 잘 작동했다. 이와 같은 문제는 아래와 같은 나의 querydsl코드에 있었다. join문을 보면 postImage 엔티티와 join을 하는 것을 볼 수 있다. 현재 포스트 테이블과 포스트 이미지 테이블이 있다. 포스트 테이블에는 thumbnailImage만을 저장하고,.. 2022. 3. 26.