2020-4-23 스프링 Data common (7) Query
쿼리
JPQL(HQL)
- Java Persistence Query Language(Hibernate Query Language)
- 데이터베이스 테이블이 아닌 엔티티 객체 모델 기반으로 쿼리 작성
- JPA 또는 하이버네이트가 해당 쿼리를 SQL로 변환해서 실행한다.
TypedQuery<Post> query = entityManager.createQuery("SELECT p FROM post as p", Post.class);
List<Post> posts = query.getResultList();
posts.forEach(System.out::println);
- 위의 방법은 TypeSafe하지 않다.
Criteria
- 타입세이프쿼리
@Override
public void run(ApplicationArguments args) throws Exception {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Post> query = builder.createQuery(Post.class);
Root<Post> root = query.from(Post.class);
query.select(root);
List<Post> posts = entityManager.createQuery(query).getResultList();
posts.forEach(System.out::println);
}
Native Query
- SQL 쿼리 실행하기
@Override
public void run(ApplicationArguments args) throws Exception {
List<Post> posts = entityManager.createNativeQuery("select * from post", Post.class).getResultList();
posts.forEach(System.out::println);
}
Written on April 23, 2020