JPQL은 JPA에서 사용하는 객체지향 쿼리 언어이다.
SQL과 문법이 비슷하지만, 테이블이 아닌 엔티티 객체를 대상으로 쿼리를 작성한다는 점이 특징이며, SQL과 달리 INSERT 문이 없다.
JPQL을 사용하면 데이터베이스에 독립적으로 쿼리를 작성할 수 있다.
JPQL은 SQL이랑 문법이 비슷한데, 테이블이 아니라 엔티티(객체)를 대상으로 쿼리를 작성한다는 게 가장 큰 차이점이다.
Create (생성)
새로운 엔티티(객체)를 데이터베이스에 저장할 때는 persist() 메서드를 사용한다.
javaem.persist(student);
예를 들어, Student 엔티티 객체를 만들어서 persist하면 DB에 저장된다.
Read (조회)
JPQL로 데이터를 조회할 때는 SELECT문을 사용한다.
SQL이랑 비슷하지만 테이블명이 아니라 엔티티명을 쓴다.
java
SELECT s FROM Student s WHERE s.major = '컴퓨터공학'
이렇게 쓰면 컴퓨터공학 전공 학생들을 전부 조회할 수 있다.
Update (수정)
JPQL에서는 객체의 값을 바꾼 다음 트랜잭션을 커밋하면 자동으로 DB에 반영된다.
java
student.setMajor("전자공학");
Delete (삭제)
삭제할 때는 remove() 메서드를 사용한다.
java
em.remove(student);
또는 JPQL로 직접 delete 쿼리를 작성할 수도 있다.
JPQL은 SQL이랑 문법이 거의 비슷하지만 테이블 대신 엔티티를 다루고, JPA에서 객체지향적으로 데이터를 관리할 때 꼭 필요한 쿼리 언어다.
저도 이런식으로 좀 더 꼼꼼하게 하고 싶었었는데! 너무 잘 작성하셨어요!!