QueryDSL?
QeuryDSL은 자바에서 다양한 백엔드 데이터를 타입에 안전하며 쿼리와 유사하게 사용할 수 있게 해주는 프레임워크이다.
JPA 및 하이버네이트와 같이 다양한 ORM 프레임워크와 사용이 가능하다.
사용 예시
public class StockRepositoryImpl implements StockRepository {
private final EntityManager em;
public List<Stock> findByName(String name) {
QStock stock = QStock.stock;
BooleanExpression nameFilter = stock.name.eq(name);
JPAQuery<Stock> query = new JPAQuery<>(em);
return query.select(stock).from(stock).where(nameFilter).fetch();
}
}
QueryDSL에 의해서 QStock Class가 생성이 되며, 해당 클래스를 사용하여 stock의 이름을 통해 검색하는 예시이다.
select 및 from으로 쿼리를 정의하고, where에 조건으로 사용되는 필터를 추가 후, fetch를 통해 쿼리를 실행하고 결과를 반환받는다.
Join 예시
public List<Report> findReportsByStockName(String stockName) {
QStock stock = QStock.stock;
QReport report = QReport.report;
BooleanExpression stockNameFilter = stock.name.eq(stockName);
JPAQuery<Report> query = new JPAQuery<>(em);
return query.select(report).from(report)
.join(stock).on(report.stock.eq(stock))
.where(stockNameFilter).fetch();
}
위는 report와 stock을 join하여 조회하는 예시이다.
join(stock).on(report.stock.eq(stock))
에서 join 조건에 따라서 report 테이블과 stock 테이블을 join할 수 있다.
반응형
'Programming' 카테고리의 다른 글
[MongoDB] 정렬 sort 사용 예시 (단일 및 여러 필드) (0) | 2023.01.28 |
---|---|
[MongoDB] 컬렉션 생성 및 도큐먼트 추가 예시 (0) | 2023.01.28 |
[HTML] img 이미지 태그 src 경로 (0) | 2023.01.23 |
[리눅스] swap 확인 및 메모리 늘리기 방법 (1) | 2022.12.30 |
[리눅스] 디스크 용량 확인 cmd 방법 (df 옵션) (0) | 2022.12.30 |