반응형
TypedQuery<Member> query = em.createQuery("select m from Member m", Memeber.class);
List<Member> memberList = query.getResultList();
JPA는 엔티티 객체를 중심으로 개발을 하므로 SQL을 사용하지 않는다.
하지만 SQL을 사용해야할 때가 필요한데, 바로 검색쿼리를 사용할 때 이다.
JPA는 엔티티 객체를 중심으로 개발하므로 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 한다.
⇒ 필요한 데이터만 데이터베이스에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다. JPA는 JPQL(Java Persistence Query Language)를 제공한다.
JPA는 SQL을 추상화한 JPQL이라는 객체지향 쿼리 언어를 제공한다.
JPQL과 SQL 차이점
- JPQL엔티티 객체를 대상으로 쿼리한다.
- SQL은 데이터베이스 테이블을 대상으로 쿼리한다.
위의 코드인 select m from Member m
이 JPQL이다. 여기서 from Member는 회원 엔티티 객체를 말하며 Member 테이블을 말하지 않는다. JPQL은 데이터베이스 테이블을 전혀 알지 못한다.
JPA는 JPQL을 분석해서 적절한 SQL을 만들어서 데이터베이스에서 데이터를 조회하게 된다.
반응형
'프로그래밍 노트 > JPA' 카테고리의 다른 글
[JPA] 영속성 관리_1 (EntityManager, EntityManagerFactory, PersistContext) (0) | 2019.09.03 |
---|---|
[JPA] 스프링 데이터 JPA 소개 (0) | 2019.09.02 |
[JPA] 객체지향 쿼리 QueryDSL (0) | 2019.08.26 |
[JPA] JPQL 문법, 내용정리 (0) | 2019.08.21 |
JPA, Hibernate, Spring Data JPA 구분하기 (차이점) (0) | 2019.07.23 |