본문 바로가기
728x90
반응형

JPQL16

[JPA/Java] 페이징 API JPA는 페이징을 다음 두 API로 추상화하였다. (1) setFirstResult(int startPosition) :조회 시작 위치 ( 0 부터 시작 ) (2) setMaxResults(int maxResult) : 조회할 데이터 수 ex) //페이징 쿼리 String jpql = "select m from Member m order by m.name desc"; List resultList = em.createQuery(jpql, Member.class) .setFirstResult(10) .setMaxResults(20) .getResultList(); JpaMain.java for (int i = 0; i < 100; i++) { Member member = new Member(); member.. 2023. 5. 3.
[JPA/Java] JPQL Projection(프로젝션) JPQL 프로젝션은 SELECT 절에 조회할 대상을 지정하는 것을 의미한다. 프로젝션 대상에는 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자 등 기본 데이터 타입) 이 해당된다. 엔티티 프로젝션에는 쿼리로 표현하면 SELECT m FROM Member m SELECT m.team FROM Member m 이 있고, 이를 코드로 표현하면 List result = em.createQuery("select m from Member m", Member.class).getResultList(); List result = em.createQuery("select m.team from Member m join m.team t", Team.class).getResultList(); 와 같이 표현할 수 있다. 임베디.. 2023. 4. 28.
[JPA/Java] JPQL 기본 문법과 기능 JPQL은 객체지향 쿼리 언어이다. 테이블을 대상으로 쿼리하는 것이 아니라, 엔티티 객체를 대상으로 쿼리 한다. JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. JPQL은 결국 SQL로 변환된다. 새로 프로젝트를 만들어서 JPQL 실습을 진행한다. 신규 프로젝트를 만들 때, pom.xml에 있는 Dependecies와 resources 하위에 있는 META-INF/persistence.xml을 그대로 가져와서 진행한다. 모델링은 아래와 같다. Member.java package jpql; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue private Long id; private Stri.. 2023. 4. 27.
[JPA/Java] 객체지향 쿼리 언어 종류 JPA는 다양한 쿼리 방법을 지원하고 있다. JPQL, JPA Criteria, QueryDSL, 네이티브 SQL 등등 이 중에서 JPQL과 QueryDSL을 현업에서 많이 사용한다고 한다. 이 외에도 JDBC API를 직접 사용하기도 하고, MyBatis와 SpringJdbcTemplate을 함께 사용하기도 한다. 먼저, JPQL에 대해서 알아보자. ※ JPQL JPQL은 가장 단순한 조회 방법이다. EntityManager.find()를 이용하거나, 객체 그래프 탐색(a.getB().getC()) 와 같은 형식으로 찾기도 한다. JPA를 사용하면 엔티티 객체 중심으로 개발이 가능한데, 문제는 검색쿼리를 사용할 때이다. 여기서 보통 쿼리로 조건을 줄때, WHERE 절을 사용하는데, 조건을 주고싶을 땐 .. 2023. 4. 27.
728x90
반응형