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();
차이점
- select 뒤에 객체의 별명을 적습니다.
- * → b
- from 뒤에 테이블 이름이 아닌 객체의 이름을 적습니다.
- board_tb → Board b
- 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();
}
차이점
- from 뒤에 테이블 이름이 아닌 객체의 이름을 적습니다.
- board_tb → Board b
- where 조건문의 파라미터 설정 방법이 다릅니다.
- where id=? → where id = :id
- q.setParameter(1, id); → .setParameter("id", id)
Share article