반응형 [Kotlin + Spring] QueryDSL 사용해보기 이전 글을 통한 세팅에 이어서 QueryDSL을 활용해보겠습니다. Post 테이블과 1: N 관계로, UserLiked와 Comment가 있습니다. 저는 Post를 가져올 때 UserLiked의 갯수와 Comment의 갯수를 함께 가져오는 작업을 QueryDSL로 진행해보겠습니다. data class PostWithCountsDTO( val id: Long, val title: String, val type: String, val subType: String, val content: String, val time: Long, val hasImage: Boolean, val commentCount: Long, val likedUsersCount: Long ) DTO Projection을 위해서 DTO를 정.. 2024. 4. 8. [Kotlin + Spring] Spring 3.X 버전 QueryDSL 세팅하기 이전 글에서 소개했듯이, 저는 이번 제 1인 프로젝트에 QueryDSL을 적용하기로 했습니다. Spring 2.6 이상 버전이냐 Spring 3.X 버전이냐에 따라 세팅에 차이가 조금씩 있는 것 같습니다. 저도 그랬지만 아마 많은 분들이 QueryDSL 초반 세팅에서부터 좀 힘들어 하셨을 것 같아요. 이 글에서는 Spring 3.X 버전을 기준으로 세팅 방법을 기록하겠습니다. // 중략 plugins { kotlin("kapt") version "1.9.21" } // 중략 val queryDslVersion: String by extra // 중략 dependencies { implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta") kapt("com.quer.. 2024. 4. 8. [Kotlin + Spring] 내가 QueryDSL을 도입하게 된 이유 개인으로 새로 개발하고 있는 프로젝트가 있습니다. 원래는 이전 프로젝트들처럼 FireBase or SupaBase 로 간단하게 MVP 개발 후에 백엔드를 추후 구축하려 했으나 오래 걸릴 것 같지 않고 백엔드가 필요해져셔 Kotlin + Spring 으로 백엔드를 구축하고 있습니다. 단순 JPA로만 구현을 하다가, 확장성을 높여보기 위해서 QueryDSL 도입을 추진하게 되었습니다. N+1 문제 JPA를 사용해보신 분들이라면 모두 한 번쯤은 겪으셨을만한 문제입니다. 다른 라이브러리는 문제 없지만, JPA 는 이렇습니다. N + 1 문제 또는 1 + N 문제는 (같은 말입니다) OneToMany 관계에서 LAZY 조회를 하던 EAGER 조회를 하던, 프록시 객체를 이용하는 JPA 특성 상 발생하는 문제입니다.. 2024. 4. 8. [Git] 잘못되게 커밋을 쌓았다면? Cherry-pick ! 이전 글에서 잠깐 소개했지만, 체리픽을 쉽게 설명하고자 다시 글을 작성합니다. 체리 픽은, 원하지 않는 브랜치에 커밋을 쌓았을 때 원하는 브랜치의 커밋으로 복사해주는 방법입니다. 즉 원래는 develop 브랜치에서 feature/ui 를 따서 거기에 커밋을 쌓아야 하는데, 실수로 develop 브랜치에 커밋한 경우가 있죠? 그럴 때 사용할 수 있습니다. 1. 원래 브랜치를 생성해야 하는 develop 브랜치 시점으로 checkout 2. feature/ui 브랜치 생성 3. feature/ui 브랜치로 checkout 후 git cherry-pick "가져올 커밋 값" 4. develop 브랜치로 checkout 후 잘못 쌓은 커밋 삭제 git cherry-pick 은 커밋을 이동하는게 아니라 복사하는 .. 2024. 3. 27. 이전 1 2 3 4 5 6 7 ··· 244 다음 반응형