📦 Database/QueryDSL2023. 5. 19. 21:54QueryDsl - Boolean Builder

QueryDsl - Boolean Builder BooleanBuilder를 활용하면 동적인 쿼리 조건을 구성할 수 있으며, 필요에 따라 AND나 OR 연산으로 조건을 조합할 수 있습니다. 이를 통해 쿼리의 유연성과 강력한 조건 검색을 달성할 수 있습니다. and() & or() BooleanBuilder는 JPA에서 사용하는 동적 쿼리를 작성할 수 있는 빌더 클래스 중 하나입니다. and()와 or() 메서드는 BooleanBuilder 객체에 조건을 추가할 때 사용됩니다. and() 메서드는 이전에 추가된 조건과 새로운 조건을 AND로 연결합니다. 예를 들어, 다음과 같은 코드를 작성할 수 있습니다. val builder = BooleanBuilder() builder.and(condition1).a..

📦 Database/QueryDSL2023. 5. 19. 21:45QueryDsl - 성능 개선

QueryDsl 성능 개선 (+ JPQL 관련 이슈) exist 금지 SQL exists문은 조건을 만족하는 레코드를 1개 찾으면 바로 결과를 반환하고 쿼리를 종료한다. 반면 count(1)의 경우 마지막 레코드까지 검색을 하기 떄문에 성능이 낭비된다. 이런 성능차이는 스캔 대상이 앞에 위치할수록 더 심하게 발생될것이고, QueryDsl의 exists는 SQL의 count()>0 쿼리로 날린다. 이를 개선하기 위해 QueryDsl의 selectOne과 fetchFirst(= limit 1)을 사용해 직접 exists 쿼리를 구현한다. 주의할 점은 조회결과가 없으면 null이 반환되기 떄문에 0이 아닌 null로 체크를 해야 한다. 아래 코드로 exists를 직접 쿼리하자 SQL의 exists와 거의 동일..

📦 Database/QueryDSL2023. 5. 1. 01:46QueryDSL - Basic

💡 QueryDSL QueryDSL은 SQL과 유사한 문법으로 Java와 Kotlin 등의 언어로 쿼리를 작성할 수 있는 라이브러리입니다. 다음은 Kotlin 코드를 이용한 QueryDSL 사용 방법에 대해 구체적으로 설명하겠습니다. Gradle 설정 QueryDSL을 사용하기 위해서는 Gradle에 QueryDSL 관련 의존성을 추가해야 합니다. build.gradle 파일에 다음과 같이 의존성을 추가합니다. dependencies { implementation("com.querydsl:querydsl-jpa") kapt("com.querydsl:querydsl-apt") } Entity 클래스 생성 QueryDSL을 사용하려면 Entity 클래스를 먼저 생성해야 합니다. 예를 들어, 다음과 같은 Us..

📦 Database/Firebase2023. 4. 27. 09:53FCM HTTP -> HTTP v1 Migration

HTTP -> HTTP v1 마이그레이션 진행 순서 서버 엔드포인트 업데이트 전송 요청의 승인 업데이트 ADC를 사용한 사용자 인정 정보 제공 수동으로 사용자 인증 정보 제공 사용자 인증 정보를 사용한 액세스 토큰 발급 전송 요청의 페이로드 업데이트 예시: 간단한 알림 메시지 예시: 여러 플랫폼 타겟팅 예시: 플랫폼 재정의로 맟춤설정 예시: 특정 기기 타겟팅 HTTP v1의 장점 액세스 토큰을 통한 보안성 강화 플랫폼에 따른 메시지 맟춤 설정 새 클라이언트 플랫폼 버전을 위한 확장성 강화 서버 엔드포인트 업데이트 HTTP v1 API의 엔드포인트 URL은 다음과 같은 면에서 기존 엔드포인트와 다릅니다. 경로에 /v1로 버전이 지정됩니다. 경로에 /projects/myproject-ID/ 형식으로 앱의 F..

📦 Database/Firebase2023. 4. 26. 10:31FCM (Firebase Cloud Message)

💡 FCM 출처 https://donghun.dev/Firebase-Cloud-Messaging 참조 사이트 https://app.diagrams.net/ https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko#send-messages-to-specific-devices-legacy FCM이란 무엇인가? FCM은 Firebase Cloud Messaging의 약자로, 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다. 모든 사용자에게 알림 메세지를 전송할 수도 있고, 그룹을 지어 메시지를 전송할 수도 있다. Friebase의 서비스는 요금 정책에 따라, 이용할 수 있는 범위가 다르지만 FCM은 요금 정책에 구분 없이..

📦 Database/Firebase2023. 4. 22. 01:22Firebase - Spring Boot 연동

💡 Firebase Spring Boot 연동 사전 준비사항 Firebase 프로젝트 생성 Firebase 프로젝트 & Cloud Firestore 생성 Firebase 프로젝트 설정 - 서비스 계정 - 새 비공개 키 생성 - json 파일 Spring resources 디렉터리로 이동 Dependency 등록 implementation group: 'com.google.firebase', name: 'firebase-admin', version: '8.1.0' Spring Boot 설정 // FirebaseConfig.kt @Service @Configuration class FirebaseConfig { @Value("\${firebasePath}") pri..

📦 Database/QueryDSL2023. 4. 21. 13:29@QueryProjection - DTO 조회

💡 @QueryProjection select 문에 대상을 지정하는 것이다. 컴파일 타임에 타입 체크가 가능하므로 다른 방법들보다 안전하다. 하지만 DTO까지 Q파일을 생성해야 하며, DTO에 QueryDsl에 대한 의존도가 생긴다. QueryDSL은 3가지 방법을 통해 DTO를 조회할 수 있도록 지원한다. 프로퍼티 접근 (Setter) : setter와 기본 생성자 필수 필드 직접 접근 : 기본 생성자 필수 생성자 사용 : 타입이 일치하는 생성자 필수 생성자를 통해 DTO를 조회하는 예시 data class MemberDtoQueryProjection @QueryProjection constructor( val username: String, val age: Int) 이후 빌드 시 DTO가 Q파일로 생..

image