[기술 정리] 7. JPQL(Java Persistence Query Language)

KangHo Lee's avatar
Nov 21, 2024
[기술 정리] 7. JPQL(Java Persistence Query Language)
💡
JPA에서 엔터티 객체를 대상으로 하는 객체 지향 쿼리 언어입니다

1. SELECT

createNativeQuery (일반 SQL 쿼리문)

public List<Board> findAll() { Query q = em.createNativeQuery("select * from board_tb order by id desc", Board.class); return q.getResultList(); }

em.createQuery (JPQL)

return em.createQuery("select b from Board b order by b.id desc", Board.class) .getResultList();

차이점

  1. select 뒤에 객체의 별명을 적습니다.
      • * → b
  1. from 뒤에 테이블 이름이 아닌 객체의 이름을 적습니다.
      • board_tb → Board b
  1. order by 뒤에 별명.필드이름 을 적어야 합니다.
      • id → b.id

2. DELETE

createNativeQuery (일반 SQL 쿼리문)

public void delete(int id) { Query q = em.createNativeQuery("delete from board_tb where id=?"); q.setParameter(1, id); q.executeUpdate(); }

em.createQuery (JPQL)

public void delete(int id) { em.createQuery("delete from Board b where id = :id") .setParameter("id", id) .executeUpdate(); }

차이점

  1. from 뒤에 테이블 이름이 아닌 객체의 이름을 적습니다.
      • board_tb → Board b
  1. where 조건문의 파라미터 설정 방법이 다릅니다.
      • where id=? → where id = :id
      • q.setParameter(1, id); → .setParameter("id", id)
 
Share article

devleekangho