728x90
반응형
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을 만들어서 데이터베이스에서 데이터를 조회하게 된다.
728x90
반응형
'프로그래밍 노트 > 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 |