본문 바로가기

querydsl

(7)
[JPA] Nested Response List 처리 상속 적으로 Response가 필요한 경우가 있다. 부모 DTO가 있고 해당 디티오는 하위의 디티오 리스트를 가지고 있다. 해당 케이스는 아래와 같이 처리한다. package com.boiler.core.backend.normaladmin.reservation.dto; import com.boiler.core.backend.entity.Gym; import com.boiler.core.backend.entity.Member; import com.boiler.core.backend.entity.Reservation; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Sett..
[QueryDsl] Spring 3 버전 p6spy 적용 로깅에서 실제 동작하는 쿼리 로깅찍는 법 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' logging: level: p6spy: info org: hibernate: type: descriptor: sql: trace package com.boiler.core.backend.config; import com.p6spy.engine.logging.Category; import com.p6spy.engine.spy.P6SpyOptions; import com.p6spy.engine.spy.appender.MessageFormattingStrategy; import jakarta.annotation.PostConstruct;..
[JPA] QueryDsl 여러 기능 정리 1) BooleanBuilder, BolleanExpression 사용 비슷한 용도이지만 내 생각에 두개의 용도는 다르다. BooleanExpression은 null인 경우 null을 반환해주면서, 조건에서 제외가 된다. 즉 특정 조건에 따라서 다이나믹하게 조건절이 추가되어야 하는경우, 심하면 없어도되는경우 BooleanExpression을 사용한다. BooleanBuilder는 항상 객체가 생성이 되지만 복잡한 조건절의 쿼리를 생성해야할 때 이걸 사용하게 되면, 그나마 보기 쉽고 조합을 자유롭게 해줄수있다 다만 무조건 사용해야하고 복잡한 조건절의 조합 도구라고 보면된다. 물론 두개다 때에 따라서 용도와 장점과 어긋나게 사용은 가능하지만 장단이 있으니 그에 따라 맞게 사용하면 좋을 것 같다. Boolea..
[JPA] QueryDsl 친구 관련 설계 친구데이터 관련 설계를 하고 있었다. 뭐가 좋을까. 고민 되었다. 특히 추천 친구라는 기능을 하나 만들고 싶었다. 우선 Entity간의 연관관계를 두기 싫었다. 그래서... 나는 이렇게 설계했다. 회원가입하면, Friends 테이블에 자기 자신도 넣어주는 것이다. 자세한건 아래 로직을 보자 1) 회원가입 로직 @PostMapping("/user") public User saveUser(@RequestBody UserDto userDto) { return userService.saveUser(userDto); } public User saveUser(UserDto userDto) { List result = userRepository.findByUserId(userDto.getUserId()); if(re..
[QueryDsl] Spring 3.0 이상 Jdk 17 세팅 + 설계 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.2.0-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.2' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.boiler.flutterbackend' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor ..
[JPA] QueryDsl 사용하기 사용을 위한 기본구성 1. JpaFactory package com.practice.demo.config; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class JpaFactory { @Autowired EntityManager em; @Bean ..
[QueryDSL] QueryDSL 세팅 1. Build.gradle에 추가 // QueryDSL로 주석 처리한 부분만 신경쓰면된다. // QueryDSL buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '2.7.12-SNAPSHOT' id 'io.spring.dependency-management' version '1.0.15.RELEASE' // QueryDSL id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' co..