INTP 개발자
close
프로필 배경
프로필 로고

INTP 개발자

  • 분류 전체보기 (397)
    • Java (54)
      • 소개 (2)
      • 기본 문법 및 OOP (9)
      • Java API (0)
      • Java 응용 프로그래밍 (0)
      • Java 8+ (0)
      • Java 외부 라이브러리 (0)
    • Spring (0)
      • Spring Core (0)
      • Spring Web (0)
      • Spring Data (0)
      • Spring Infra (0)
    • Docker (6)
    • Messaging & Event (3)
      • EDA(Event Driven Architectu.. (2)
      • Kafka (1)
    • CS (17)
      • Architecture (1)
      • Newtwork (0)
      • OS(Operating System) (0)
      • Algorithms (0)
      • 면접 준비 (7)
      • 네트워크 (2)
      • HTTP (6)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • ETC (11)
  • 홈
  • 태그
QueryDSL DTO에 값 담기

QueryDSL DTO에 값 담기

DTO에 값 담는 방법 프로퍼티 접근 (setter 사용) 필드 접근 생성자 이용 @QueryProjection 어노테이션 1. 프로퍼티 접근 List result = jpaQueryFactory .select(Projections.bean(MemberDto.class, member.username, member.age)) .from(member) .fetch(); Projection.bean ( Class, {field, ... } ) 이 메소드를 사용하면 기본 생성자와 setter를 통해서 객체를 만듭니다. 때문에 DTO에 setter, getter를 설정해주어야 합니다. 2. 필드 접근 List result = jpaQueryFactory .select(Projections.fields(Member..

  • format_list_bulleted Spring Data/Query DSL
  • · 2023. 1. 15.
  • textsms
QueryDSL 문법

QueryDSL 문법

조건 쿼리 import static com.example.querydsl.entity.QMember.member public List findAllMemberByNameAndAge(String username, Integer age) { return jpaQueryFactory.selectFrom(member) .where(member.username.eq(username) .and(member.age.eq(age))) .fetch(); } 검색 조건을 추가(and, or)할 때 체인 형식으로 합니다. 파라미터로 null 값이 들어오면 해당 문법 member.username.eq("member")// username = "member" member.username.ne("member")//username..

  • format_list_bulleted Spring Data/Query DSL
  • · 2023. 1. 15.
  • textsms
QueryDSL Spring Data JPA 같이 적용하기

QueryDSL Spring Data JPA 같이 적용하기

DB를 객체지향적으로 다룰 수 있는 JPA를 사용하면 간단한 작업(ex. CURD)을 할 때는 편리하다는 생각을 했습니다. 하지만 테이블들이 많은 환경에서는 join을 해야 하거나 서브쿼리를 만들어야 하는 경우가 많아지고, Query가 점점 길어지면서 JPA만으로는 작업하기 까다롭겠다는 생각을 하였습니다. 이에 대한 해결 방안으로 JPA와 MyBatis를 같이 사용하여 복잡한 쿼리는 MyBatis로 해결하였지만 실무에서는 JPA + QueryDSL을 사용한다 하여 QueryDSL에 관한 공부 하며 포스팅하려 합니다. QueryDSL 쿼리를 자바 코드로 작성할 수 있도록 해줍니다. 자바 코드로 작성하기 때문에 개발자들도 쉽게 작성할 수 있고 문법 오류도 컴파일 시에 알 수가 있습니다. 데이터 조회 기능에 ..

  • format_list_bulleted Spring Data/Query DSL
  • · 2023. 1. 14.
  • textsms
JPA N+1 문제

JPA N+1 문제

N+1 문제 연관 관계에서 발생하는 문제로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수 (N) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 것을 N+1 문제라고 합니다. 1번의 쿼리로 N개의 엔티티를 조회(1번) 엔티티에 연관된 데이터를 가져오기 위해 추가적인 쿼리를 실행(N번) 예제) User, Order 엔티티 사용자(User) 모두를 조회하기 위해 쿼리를 하나 보냅니다. → 1번 이때 사용자마다 갖고 있는 주문(Order)에 대한 정보를 가져오기 위해 추가적인 쿼리를 날립니다. User1의 주문, User2의 주문, ..., UserN의 주문 → N번 총 N+1개의 쿼리를 날리게 됩니다. N+1 문제는 즉시로딩 때문인가? fetch = FetchType.EAGER..

  • format_list_bulleted Spring Data/JPA
  • · 2023. 1. 13.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (397)
    • Java (54)
      • 소개 (2)
      • 기본 문법 및 OOP (9)
      • Java API (0)
      • Java 응용 프로그래밍 (0)
      • Java 8+ (0)
      • Java 외부 라이브러리 (0)
    • Spring (0)
      • Spring Core (0)
      • Spring Web (0)
      • Spring Data (0)
      • Spring Infra (0)
    • Docker (6)
    • Messaging & Event (3)
      • EDA(Event Driven Architectu.. (2)
      • Kafka (1)
    • CS (17)
      • Architecture (1)
      • Newtwork (0)
      • OS(Operating System) (0)
      • Algorithms (0)
      • 면접 준비 (7)
      • 네트워크 (2)
      • HTTP (6)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • ETC (11)
최근 글
인기 글
최근 댓글
태그
  • #servlet
  • #jsp
  • #mybatis
  • #querydsl
  • #Docker
  • #이펙티브 자바
  • #JDBC
  • #게시판
  • #회원 관리
  • #Java
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바