QueryDSL - 동적 쿼리와 성능 최적화 조회(Builder 와 where절 사용)
·
Back-End/queryDSL
Builder사용MemberTeamDto - 조회 최적화용 DTO 추가package study.querydsl.dto;import com.querydsl.core.annotations.QueryProjection;import lombok.Data;@Datapublic class MemberTeamDto { private Long memberId; private String username; private int age; private Long teamId; private String teamName; @QueryProjection public MemberTeamDto(Long memberId, String username, int age, Long teamId, St..
QueryDSL - 실무활용(순수 JPA와 Querydsl 리포지토리 비교, 팩토리 빈 주입받기)
·
Back-End/queryDSL
순수 JPA 리포지토리 생성package study.querydsl.repository;import com.querydsl.jpa.impl.JPAQueryFactory;import jakarta.persistence.EntityManager;import org.springframework.stereotype.Repository;import study.querydsl.entity.Member;import java.util.List;import java.util.Optional;@Repositorypublic class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; ..
깃허브 액션 온프레미스 서버 CD 적용하기
·
CI & CD
0. 어떻게 적용 할 것인가?이전글 참고https://scoring.tistory.com/entry/%EA%B9%83%ED%97%88%EB%B8%8C-%EC%95%A1%EC%85%98-CI-%EA%B5%AC%EC%B6%95-%EA%B3%BC%EC%A0%95-from-%EC%98%A8-%ED%94%84%EB%A0%88%EB%AF%B8%EC%8A%A4-%EC%84%9C%EB%B2%84 깃허브 액션 CI 구축 과정 from 온 프레미스 서버깃허브 액션 적용 배경Java Enum 활용기 | 우아한형제들 기술블로그 Java Enum 활용기 | 우아한형제들 기술블로그안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다.scoring.tistory.com사용 이유 : 서버환경이 온프레미스 환경..
QueryDSL - 동적 쿼리, 벌크 연산, SQL Function 호출
·
Back-End/queryDSL
동적 쿼리BooleanBuilder 사용 @Test public void dynamicQuery_BooleanBuilder() { String usernameParam = "member1"; Integer ageParam = 10; List result = searchMember1(usernameParam, ageParam); Assertions.assertThat(result).hasSize(1); } private List searchMember1(String usernameCond, Integer ageCond) { BooleanBuilder builder = new BooleanBuilder(); if..
QueryDSL - 중급문법(프로젝션과 결과 반환 기본과 DTO, @QueryProjection)
·
Back-End/queryDSL
기본 프로젝션💡프로젝션이란?select대상을 지정하는 행위를 지칭한다.member의 username만 가져오는 경우 → 프로젝션이 1개member의 username과 age 2개를 가져오는 경우 → 프로젝션이 2개대상이 하나인 경우 @Test public void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String s : result) { System.out.println("s = " + s); } }하나인 경..
QueryDSL - 기본문법(서브쿼리, Case, 상수와 문자 더하기)
·
Back-End/queryDSL
서브 쿼리JPAExcpressions를 이용해서 서브쿼리를 사용 할 수 있다.서브쿼리 eq 사용 예시 /* * 나이가 가장 많은 회원 조회 * */ @Test public void subQuery() { // 기존에 쓰던 static인 QMember객체 사용시 겹칠수 있어서 서브쿼리용 Qmember 생성 QMember memberSub = new QMember("memberSub"); List result = queryFactory.selectFrom(member) .where(member.age.eq( JPAExpressions ..
QueryDSL - 기본문법(집합, 조인)
·
Back-End/queryDSL
집합 함수 @Test public void aggregation() { List result = queryFactory .select( member.count(), member.age.sum(), member.age.avg(), member.age.max(), member.age.min() ) .from(member) .fetch(); Tuple tuple = ..
QueryDSL - 기본 문법(검색, 결과, 정렬, 페이징)
·
Back-End/queryDSL
QueryDSL - 기본 문법(검색, 결과, 정렬, 페이징)검색 조건 쿼리기본 검색 쿼리@Testpublic void search() { Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.eq(10))) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1");}select from 을 selectFrom으로 합칠수 있음JPQL이 제공하는 모든 검색 조건 제공member.username.eq("member1") // username..
Window 환경에서 Redis 설치하기
·
Back-End/Redis
🧠 개요안녕하세요. 오늘은 Windows 환경에서 Redis를 설치하는 방법에 대해 알아보겠습니다.Redis는 높은 성능과 유연한 데이터 구조를 제공하여, 다양한 백엔드 환경에서 핵심 요소로 활용되고 있습니다.📌 Redis란?Redis(REmote DIctionary Server)는 오픈 소스 기반의 인메모리 데이터 저장소로, Key-Value 구조를 기반으로 데이터를 빠르게 읽고 쓰는 것이 특징입니다.✅ Redis의 주요 특징메모리 기반 저장소로 빠른 읽기/쓰기 속도 제공메모리의 데이터를 디스크에 주기적 백업(RDB, AOF) 가능다양한 데이터 구조 지원: 리스트, 해시, 셋, 정렬된 셋 등풍부한 명령어 지원으로 유연한 데이터 조작 가능다수의 명령어를 하나의 트랜잭션으로 묶어 일관성 보장 가능🛠 ..
깃허브 액션 CI 구축 과정 from 온 프레미스 서버
·
CI & CD
깃허브 액션 적용 배경Java Enum 활용기 | 우아한형제들 기술블로그 Java Enum 활용기 | 우아한형제들 기술블로그안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해techblog.woowahan.com해당 글 에서는, 현재 개발 트렌드가 관리 주체가 DB에서 코드(객체)로 변하고 있다는 것을 통해서 코드 개발 및 유지보수의 용이성을 높일 수 있다고 설명합니다. 현재 회사에서 사용하는 JPA도,쿼리를 객체 지향적으로 작성할 수 있도록 도와 주는 도구다 보니, 이를 더 잘 활용하기 위해서는 CI&CD 구축이 필요하다고 생각하였습니다.CI & CDCI ..