- 일단 우리가 JPA를 사용한다는 것은 ORM의 특성을 사용하기 위함이다.
- 쿼리 없이 자바 개발자가 간단한 쿼리에 대한 지식만 사용을 한다면 가능하기 때문에 사용하다.
- Jpa 를 쓰다보면 수만은 쿼리를 만들어야 하는 경우가 있을 것이다. 그러다보면 쿼리를 만들다 보면 많은 통계를 내야될때도 있을 것이다.
- 예를 들어 설명은 하면 리뷰의 개수 또는 좋아요의 수를 알고 싶다고 한다.
그러면 리뷰 테이블에 저장되어있는 로우의 수를 알아야 한다.
selesct count(*) from review
이렇게 query를 사용할 수 있을 것이다.
그럼 위의 구문을 JPA 에서는 어떻게 사용을 할까?
JPA 에서도 간단하다.
NumberExpressNumberExpression<?> reviewCount = review.count();
설명할것은 NuberExpression 객체를 이용한 사칙 연산 이다.
다음의 예제로 설명을 해보겠다.
NuberExpression A 와 B라는 변수가 있다.
Query | JPA |
---|---|
select 1 + 2 from dual; | NumberExpression A , B; A = 1; B = 2; NumbersExpression C = A.add(B); List list = jpaQueryFactory .select(c) .from(dual) .fetch(); |
Query | JPA |
---|---|
select 1 / 2 from dual | NumberExpression A , B; A = 1; B = 2; NumberExpression C = A.divide(B); List list = jpaQueryFactory.select(C).from(dual).fetch(); |
Query | JPA |
---|---|
select 1-2 from dual | NumberExpression A = 1; NumberExpression B = 2; NumberExpression C = A.subtract(B); List list = jpaQueryFactory.select(C).from(dual).fetch(); |
Query | JPA |
---|---|
select 1*2 from dual | NumberExpression A = 1; NumberExpression B = 2; NumberExpression C = A.multiply(B); List list = jpaQueryFactory.select(C).from(dual).fetch(); |