Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- spring서버
- REST란
- queryDSL
- Filter
- jpa에러
- ERD 작성
- Error creating bean with name
- JPA주의사항
- 인텔리제이
- 빈생성안됨
- git
- 복합키
- json
- uncheck Exception
- 최종 프로젝트
- 스프링 부트 기능
- 스프링부트오류
- JoinColumn
- REST API 규칙
- JPA
- 스프링 부트 공식 문서
- Q 클래스
- jpa회원가입
- 1차캐시
- Spring Spring boot 차이
- github
- jwt메서드
- Unsatisfied dependency
- @IdClass
- json gson 차이
Archives
- Today
- Total
Everyday Dev System
QueryDSL 수정, 삭제 배치 쿼리 본문
본 글은 다음 글을 참조하여 일부만 변경하여 작성하였으니, 아래 글을 먼저 확인 부탁드립니다.
아래 게시글을 참조하였고, 해당 글은 코드에 대한 자세한 설명만 추가한 글입니다.
https://cherrypick.co.kr/querydsl-update-delete/
QueryDSL 수정, 삭제 배치 쿼리
JPQL 배치 쿼리와 같이 영속성 컨텍스트를 무시하고 데이터베이스를 직접 쿼리한다. QItem item = Qitem.item; JPAUpdateClause updateClause = new JPAUpdateClause(em, item); long count = updateClause.where(item.name.eq("체리픽"))
cherrypick.co.kr
QItem item = Qitem.item;
JPAUpdateClause updateClause = new JPAUpdateClause(em, item);
long count = updateClause.where(item.name.eq("chaeyoung")).set(item.price, item.price.add(100)).execute();
- QItem item = Qitem.item;
- Querydsl 라이브러리를 사용하여 JPA 쿼리를 생성하기 위한 Q-객체를 만듭니다.
- QItem은 Item 엔티티에 대한 Querydsl Q타입 클래스를 의미합니다.
- Qitem.item은 QItem 클래스에서 정의한 item static field로, 이는 쿼리에서 사용할 엔티티에 대한 별칭(alias) 역할을 합니다.
- JPAUpdateClause updateClause = new JPAUpdateClause(em, item);
- JPA 엔티티를 업데이트하는 데 사용되는 JPAUpdateClause 객체를 생성합니다.
- em은 Entity Manager를 의미합니다. 이는 JPA를 통해 DB와 상호 작용하는데 사용됩니다.
- item은 위에서 만든 QItem 객체로, 업데이트할 엔티티를 지정하기 위해 넣어줬습니다.
- long count = updateClause.where(item.name.eq("chaeyoung")).set(item.price, item.price.add(100)).execute();
- 실제 엔티티를 업데이트하는 코드입니다.
- updateClause.where(item.name.eq("chaeyoung"))는 item 엔티티에서 이름이 "chaeyoung"인 행(레코드)을 선택하는 조건을 지정합니다.
- set(item.price, item.price.add(100))는 선택된 행의 price 필드를 100만큼 증가시킵니다.
- execute()는 실제로 DB에 업데이트 쿼리를 수행하는 메서드입니다.
- long count는 업데이트가 적용된 행의 수를 나타내는 변수입니다.
요약하면, 이 코드는 JPA와 Querydsl을 사용하여 item 테이블에서 이름이 "chaeyoung"인 레코드의 가격을 100 증가시키는 업데이트 쿼리를 실행합니다.
QItem item = Qitem.item;
JPADeleteClause deleteClause = new JPADeleteClause(em, item);
long count = deleteClause.where(item.name.eq("chaeyoung")).execute();
- QItem item = Qitem.item;
- Querydsl 라이브러리를 사용하여 JPA 쿼리를 생성하기 위한 Q-객체를 만듭니다.
- QItem은 Item 엔티티에 대한 Querydsl Q타입 클래스를 의미합니다.
- Qitem.item은 QItem 클래스에서 정의한 item static field로, 이는 쿼리에서 사용할 엔티티에 대한 별칭(alias) 역할을 합니다.
- JPADeleteClause deleteClause = new JPADeleteClause(em, item);
- JPA 엔티티를 삭제하는데에 사용되는 JPADeleteClause 객체를 생성합니다.
- em은 Entity Manager를 의미합니다. 이는 JPA를 통해 DB와 상호 작용하는데 사용됩니다.
- item은 위에서 만든 QItem 객체로, 삭제할 엔티티를 지정하기 위해 넣어줬습니다.
- long count = deleteClause.where(item.name.eq("chaeyoung")).execute();
- 실제 엔티티를 삭제하는 코드입니다.
- deleteClause.where(item.name.eq("chaeyoung"))는 item 엔티티에서 이름이 "chaeyoung"인 행(레코드)을 선택하는 조건을 지정합니다.
- execute()는 실제로 DB에 삭제 쿼리를 수행하는 메서드입니다.
- long count는 삭제가 적용된 행의 수를 나타내는 변수입니다.