다형성 쿼리

TYPE : 조회 대상을 특정 자식으로 한정

TREAT : 자바의 타입 캐스팅과 유사

           상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용

 

엔티티 직접 사용

JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용

 

Named쿼리

@NameQuery(

                     name = "Member.findByUsername",

                     query = "select m from Member m where m.username = :username"

)

>>말 그대로 쿼리에 이름을 부여 하는것, 쿼리를 재활용 가능

미리 정의해서 이름을 부여해두고 사용하는 JPQL

정적 쿼리

어노테이션, XML에 정의

애플리케이션 로딩 시점에 초기화 후 재사용

애플리케이션 로딩 시점에 쿼리를 검증

> 스프링JPA에서 이 기능이 있다!

>>> 결론, 스프링JPA 쓰세요.

 

벌크 연산

 특징

쿼리 한 번으로 여러 테이블 로우 변경(엔티티)

executeUpdate()의 결과는 영향받은 엔티티 수 반환

UPDATE, DELETE 지원

INSERT(insert into ..select, 하이버네이트 지원)

 

 주의사항

벌크 연산은 영속성 컨텍스트를 무시하고 데이터베이스에 직접쿼리

 - 첫번째.벌크 연산을 먼저 실행

 - 두번째.벌크 연산 수행 후 영속성 컨텍스트 초기화

>>> 2가지 방법중에 하나를 선택해서 써야 한다.

>>> 스프링JPA 에서 @Modyfying 애노테이션으로 편하게 가능

 

[출처- 인프런 김영한  '자바 ORM 표준 JPA 프로그래밍- 기본편]  강의듣고 정리

'Java Web > JPA' 카테고리의 다른 글

JPQL- 페치 조인(fetch join)  (0) 2022.05.02
JPQL문법(3)  (0) 2022.05.01
JPQL문법(2)  (0) 2022.04.27
JPQL문법  (0) 2022.04.24

+ Recent posts