JPQL
2024. 11. 28. 21:18ㆍSpring Boot
Java Persistence Query Language
JPA는 기본적으로 다양한 메소드를 지원한다.
그런데 그런 메소드로 부족할 경우 쿼리 만들어 요청을 보낼 수 있는데
보통 JPQL 이나 Query DSL을 사용한다
이번에는 JQPL을 사용해보도록 하겠다.
@Repository
public interface postgre_reposiotory extends JpaRepository<postgre_data, Long> {
@Query("select data from postgre_data data where :title is null or data.title Like %:title%")
@SuppressWarnings("null")
Page<postgre_data> findAllByTitle(@Param("title") String title);
}
우선 JPQL은 일부 내용의 대소문자를 구분한다
Entity 이름 등은 구분하고 select나 from같은 건 구분 안 한다.
그리고 무조건 entity의 별칭을 지정해야 한다 단 이때 as문은 생략 가능하다
원하는 parameter을 넣고 싶을 때는 : + parameter name으로 넣으면 된다 ex) :title
그런데 해당 예제는 테이블의 모든 컬럼은 조회해서 읽어들여서 필요 없는 데이터를 읽느라 시간이 오래 걸린다
그렇다면 어떻게 특정 컬럼만 조회 할까?
여러 방법이 있지만 이번에는 DTO를 사용하는 방식으로 구현해 보겠다
@Query("select new com.example.mvc.postgreSQL.nodata_dto(data.id, data.title) from postgre_data data")
List<nodata_dto> findAllNoData();
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class nodata_dto {
private Long id;
private String title;
}
원하는 컬럼만 있는 DTO를 만들어서 new 사용해 선언해주면

이런 식으로 원하는 컬럼만 선택하여 조회 할 수 있다.
'Spring Boot' 카테고리의 다른 글
| Spring Data DTO (0) | 2024.12.01 |
|---|---|
| JPA Paging (0) | 2024.11.28 |
| Spring Cloud Eureka (0) | 2024.10.29 |
| Spring Cloud Gateway Filter (0) | 2024.10.29 |
| Spring Cloud Gateway (2) | 2024.10.25 |