Programing 55

Querydsl Pageable편하게 쓰기 확장함수, 유틸리티

아래 확장함수를 추가하여 기존 Pageable을 좀더 편하게 사용 할 수 있다. QuerydslUtil 클래스 파일을 만들고 거기에 아래 함수 추가, 필요한곳에서 import해서 쓰면 된다 fun JPAQuery.withPageable(pageable: Pageable): JPAQuery { return this.limit(pageable.pageSize.toLong()).offset(pageable.offset) } override fun findBySearchPage(condition: MemberSearchCondition, pageable: Pageable): Page { //사용법 val content = query.selectFrom(member) .where( member.name.eq(co..

코틀린 QueryDsl 설정 적용하는 방법

1.build.gradle에 querydsl, kapt 라이브러리 추가 //build.gradle plugins { id("org.springframework.boot") version "2.4.12" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("kapt") version "1.4.32" // 추가 } dependencies { //querydsl 추가 sourceSets.main { withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) { kotlin.srcDir("$buildDir/generated/source/kapt/main") } } v..

Querydsl 에러 Could not autowire. No beans of 'JPAQueryFactory' type found. 에러

JPAQueryFactory를 자동 주입할 수 없는 오류가 발생하고 있습니다. 이 문제를 해결하기 위해 다음과 같은 접근 방법을 시도해 볼 수 있습니다. 1. JPAQueryFactory의 빈을 정의하기: JPAQueryFactory는 Spring Data JPA Querydsl을 사용할 때 자동으로 생성되는 빈이 아닙니다. 따라서 JPAQueryFactory의 빈을 직접 정의해야 합니다. 아래와 같이 @Configuration 어노테이션이 지정된 클래스를 생성하고, JPAQueryFactory 빈을 정의해줍니다. import com.querydsl.jpa.impl.JPAQueryFactory import org.springframework.context.annotation.Bean import org...

JPA 컬렉션을 페치조인하면 페이징이 불가능하다

페이징기능을 사용함에 있어 OneToMany 관계를 페치 조인하여 가져왔다더니 속도가 너무 안나오는 현상이 있었다. 30초 소요 그래서 찾아보니 일대다 조인시 전체 데이터를 조회하고 메모리에서 페이징을 하기 때문에 오래 걸린다. 컬렉션을 페치 조인 하면 페이징이 불가능하다 컬렉션을 페치 조인하면 일대다 조인이 발생하므로 데이터가 예측할 수 없이 증가한다. 일대다에서 일(1)을 기준으로 페이징을 하는 것이 목적이다. 그런데 데이터는 다(N)를 기준으로 row가 생성된다. Order를 기준으로 페이징 하고 싶은데, 다(N)인 OrderItem을 조인하면 OrderItem이 기준이 되어버린다. 더 자세한 내용은 자바 ORM 표준 JPA 프로그래밍 - 페치 조인 한계 참조) 이 경우 하이버 네이트는 경고 로그를..

npm 에러 cannot find module 'node:url' or its corresponding type declarations.

dotenv를 추가한 뒤 발생되었던 에러 npm run build시 cannot find module 'node:url' or its corresponding type declarations. 라는 에러가 나왔다. node:url 이라는 타입을 찾을수 없기 때문에 나타나는 에러인데 나의 경우 현재 node버전이 낮고 그에비해 dotenv 버전이 높아서 발생한 에러였다. 해결책으로 dotenv 버전을 낮추어 받아 해결하였다. 기존 dotenv가 16버전으로 설치되었으나 아래와 같이 8.2.0버전으로 다운그레이드 하여 설치. npm install dotenv@8.2.0 이후 정상 작동

Programing/기타 2023.06.28