개요프로젝트를 진행하던 중, QueryDSL을 사용해 동적 쿼리를 작성하면서 DTO 매핑 과정에서 필드 순서가 잘못되어 한동안 디버깅에 어려움을 겪었습니다. 본 글에서는 이러한 실수를 방지할 수 있는 @QueryProjection 어노테이션에 대해 학습한 내용을 정리하고자 합니다. @QueryProjction어노테이션이란❓@QueryProjection 어노테이션은 QueryDSL을 사용한 동적 쿼리 작성 시 DTO에 타입 안전한 방식으로 값을 매핑할 수 있도록 도와주는 기능입니다. QueryDSL은 Java에서 SQL과 같은 쿼리를 타입 안전하게 작성할 수 있게 해주는 라이브러리로, 주로 Spring Data JPA와 함께 사용되며 복잡한 동적 쿼리를 작성할 때 유용합니다. @QueryProjction ..
Framework/JPA
JPA를 사용하다 보면 대부분은 엔티티 객체를 통해 데이터를 다루지만, 가끔 직접적인 쿼리를 작성해야 할 때가 있습니다. 특히, 데이터를 삽입, 수정, 삭제하는 쿼리는 엔티티만으로 처리하기 어려운 경우가 발생할 수 있습니다. 이럴 때 Spring Data JPA에서 제공하는 @Modifying 어노테이션을 사용하면, 데이터를 수정하거나 삭제하는 쿼리를 안전하고 간편하게 실행할 수 있습니다. 이번 글에서는 @Modifying 애너테이션의 개념과 활용 방법에 대해 알아보겠습니다. @Modifying 어노테이션이란❓@Modifying 어노테이션은 Spring Data JPA에서 데이터베이스 조작(수정, 삭제, 삽입) 쿼리를 실행할 때 사용하는 어노테이션입니다. @Modifying 어노테이션의 역할@Modify..
프록시(proxy)란❓프록시(Proxy)란 소프트웨어 디자인 패턴의 하나로, 다른 객체를 대신하여 그 객체에 대한 접근을 제어하거나 기능을 확장하는 객체를 의미합니다. 프록시는 실제 객체를 대신하여 그 객체의 메서드 호출을 가로채고, 필요한 경우 실제 객체에 대한 작업을 수행합니다. 프록시는 일반적으로 원래 객체와 같은 인터페이스를 구현하여, 클라이언트가 원래 객체를 사용하는 것처럼 보이게 합니다. 한마디로 표현하자면 "가짜 객체"라고 할 수 있습니다. 위 그림에서 알 수 있듯이 프록시 객체는 실제 Entity를 상속 받아서 만들어지기 때문에 실제 클래스와 겉 모양이 같습니다. 프록시 객체는 실제 엔티티에 대한 접근을 지연시키며, 실제 엔티티가 필요할 때까지 데이터베이스 쿼리를 실행하지 않습니다. 또한..
웹 애플리케이션에서 대량의 데이터를 클라이언트에게 제공할 때, 모든 데이터를 한 번에 전송하는 것은 비효율적일 뿐만 아니라 성능 문제를 일으킬 수 있습니다. 이 문제를 해결하기 위해 대부분의 애플리케이션에서는 페이징(Pagination)을 도입합니다. Spring Framework에서는 페이징과 정렬을 쉽게 처리할 수 있도록 Pageable 인터페이스를 제공합니다.본 글에서는 Spring Data JPA에 대해서 공부한 지식을 정리한 글입니다.Pageable이란❓Pageable은 Spring Data JPA에서 페이징 기능을 쉽게 구현할 수 있도록 제공하는 인터페이스입니다. Pageable 인터페이스는 페이지 번호(page), 페이지 크기(size), 정렬(sort) 정보를 담고 있으며, 이를 통해 데이..