본문 바로가기

JPQL

(5)
Bulk 연산 한 번에 많은 행을 삭제하거나 수정하는 연산을 Bulk 연산이라고 한다. 이번 글에서는 Bulk 연산을 하는 법과 주의점에 대해서 살펴보겠다. Bulk 연산하기 String query = "update Student s set s.age = s.age + 1"; int updatedDataSize = em.createQuery(query).executeUpdate(); System.out.println("updatedDataSize = " + updatedDataSize); 로그 Hibernate: update Student set age=age+1 updatedDataSize = 3 executeUpdate()를 통해 delete나 update 쿼리를 날릴 수 있다. 또한 executeUpdate()는..
JPQL 엔티티 조회 github 전체코드 주소(branch: jpql/entity) JPQL에서는 PK(식별자)가 아닌 엔티티 자체를 사용해 데이터를 조회할 수 있다. JPQL에서 엔티티를 직접 사용하면 SQL에서는 해당 Table의 PK 값을 사용한다. 음~~~ 별 거 아니니까 바로 살펴보도록 하겠다. #JPQL: 엔티티를 직접 사용 select count(s) from Student s #SQL: 엔티티의 PK를 사용 select count(s.id) as cnt from Student s 연관 엔티티를 그대로 사용하면 어떻게 될까? JpaMain.java - 조회로직 String query = "select s from Student s where s.club = :club"; List students = em.cre..
서브쿼리 JPQL에서 서브쿼리도 사용가능하다. 이 글에서는 서브쿼리가 무엇인지보다는 JPQL에서 서브쿼리를 어떻게 사용하는지에 대해 탐구해볼 것이다. JPQL 서브쿼리 // progammin부원들의 나이와 일치하는 학생 조회 String query = "select s from Student s where s.age in (select s.age from Student s join s.club c on s.club.name = 'programming')"; List students = em.createQuery(query).getResultList(); 실질적인 SQL select s from Student s where s.age in ( select s1.age from Student s1 inner join..
조인 github 전체코드 주소(branch: JPQL/join) JPQL에서 조인은 어떻게 하는지 알아보자!! Student.java package hellojpa; import lombok.AccessLevel; import lombok.Data; import lombok.Setter; import javax.persistence.*; @Entity @Data public class Student { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; private int age; @Embedded private Address address; @Setter(AccessLevel.PROTECTED) @Man..
JPA로 CRUD해보기(4) JPQL 실무에서 상황이 꼬이고 꼬이다보면 단순한 CRUD가 아니라 내가 쿼리를 직접 짜야 될 경우도 있다. 이를 위한 것이 JPQL이다. 백문이불여일견!!!! JPQL 실습을 해보도록 하자 JPQL 실습해보기 JPA로 CRUD해보기(2) 틀 코드 작성하기 시간에 만들었던 JpaMain.java의 "//CRUD 로직" 부분에 다음과 같이 코드를 작성해보자!!! List result = em.createQuery("select m from Member as m", Member.class).getResultList(); for (Member member : result) { System.out.println("member.getName() = " + member.getName()); } 실행하면 MEMBER 테이블에..