spring boot querydsl study (4)

이번 시간에는 join에 대해서 알아보자. querydsl에서는 다음과 같은 조인을 지원한다. join inner join, left join, right join 일단 차례대로 한번씩 살펴보자. join QAccount account = QAccount.account; QOrder order = QOrder.order; return from(account) .join(account.orders, order) .fetch(); join이라는 함수를 쓰면 join을 한다. join과 innerjoin의 차이점은 잘 모르겠다. 동일하게 작동하는 듯한데.. 쿼리를 보자. select account0_.account_id as account_1_0_, account0_.email as email2_0_, account0_.name as name3_0_, account0_.password as password4_0_ from account account0_ inner join orders orders1_.. Read More

spring boot querydsl study (3)

이번시간에는 서브쿼리와 프로젝션에 대해서 알아보자. 서브쿼리는 우리가 sql에서 말하는 서브쿼리와 동일하다. 일단 서브쿼리의 예제를 한번 살펴보자. QItem item = QItem.item; QItem itemSub = QItem.item; return from(item) .where(item.price.eq( JPAExpressions.select(itemSub.price.max()).from(itemSub) )).fetchOne(); 그냥 딱 봐도 일반 sql와 문법이 비슷하기에 설명은 하지 않아도 될 듯 싶은데.. item에서 가장 비싼 상품을 찾아서 반환하는 그런 query이다. 아주 간단하기 때문에 눈으로 흘겨봐도 알 듯싶다. 물론 복잡한거는 나도 모른다. 우리는 예젠에는 JPASubQuery 클래스를 생성해서 사용했다. 하지만 버전이 올라가면서.. Read More

spring boot querydsl study (2)

우리는 어제 querydsl의 기본적인 API들을 살펴보고 변경사항도 같이 살펴봤다. 이번시간은 간단한 동적쿼리와 join에 대해 알아보자. 심도있는 것은 나중에 살펴보도록하고.. 일단 엔티티부터 코드로 보자. 아래 엔티티로 공부를 할 예정이라 포스팅도 같이 했다. 추가되면 그때 그때 추가 하겠다. @Entity public class Account { @Id @GeneratedValue @Column(name = “ACCOUNT_ID”) private Long id; private String name; private String password; private String email; @OneToMany(mappedBy = “account”) private List<Order> orders = new ArrayList<>(); //getter setter hashcode.. Read More