spring-data-3

존스노우·2022년 1월 26일
0

spring-data-JPA

목록 보기
3/5

쿼리 메소드 기능

메소드 이름으로 쿼리 생성

이런건 어떻게 해결하지..

평범한 JPA 작성시

스프링데이터 JPA도 똑같네..

이름을 잘 지정해야됨 ..

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

참조

그러나 조건이 많아지면 메소드 명이 길어짐

짤막한 쿼리들 구현하기 좋다.

JPA NamedQuery

실무에서 쓸일이 없어서 편하게..?

이런식으로 흐름이 이어지는데

스프링 데이터 JPA는 좀더 간편하게 불러온다

@Param 어노테이션 값을 넘길 때 위에 @Query 주석 처리해도 동작함(네임드쿼리 자동으로 찾아줌)

통과

@Query , 리포지토리 메소드에 쿼리 정의하기

문법 오류가나도 애플리케이션 로딩할때 발견할 수 있다.

동적 쿼리는 쿼리 DSL로..

실무에서 많이 쓰는 기능
이름을 간략하게 복잡한 JPA를 쿼리로

@Query값, DTO 조회 하기

Dto 조회는 어떻게?

파라미터 바인딩

이런게 있다..

컬렉션 바인딩

반환 타입

spring-dataJPA 특징

예외없이 ..

컬렉션이 반환타입에서 데이터가 없을경우 사이즈 0 반환
단건 조회는 그냥 예외없이 Null 반환.


옵셔널은 이렇게 반환

테스트 코드.

여러가지 타입이 반환된다 문서 참조도 가능

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types

순수 JPA 페이징과 정렬

offset은 몇번 째부터? Limit 총 출력 갯수

스프링 데이터 JPA 페이징과 정렬

페이징과 정렬을 합쳤음

토탈카운트가 필요없는 페이지 (더보기 같은경우)

PageRequest.of 페이지 넘버 ,, 1 페이지 2페이지.. 신기하네

타입만 슬라이스 바꾸면 +1 됨 (더보기 기능?)
totalcount 안함

반환타입을 컬렉션도 됨

분리가능

밑으로 변경 위조건은 카운트조건에 조인이 걸린다.

** api 꿀팁

맵으로 변환해서 반환하면 된다.

벌크성 수정 쿼리

모든 직원의 연봉을 10퍼센트 인상?
한번에 업데이트 하는방법을 알아보자

순수 JPA

결과

spring data JPA

@Modifying 어노테이션 필수

그런대 조심해야 되는 부분이 있다

벌크 연산은 엔티티관리 없이 디비에 빵~ 때려버림..

이런식으로 디비에 쿼리는 날렸지만 영속성에는 아직변화가..

그래서 영속성 클리어 해줘야됨


flush; 생략가능

또다른 방법

엔티티 그래프

레이지 로딩 복습~

마지막 getNAme은 프록시 초기화 - > 이때! 쿼리 빠방 나간다.

-> 페치 조인으로 변경!

한방 쿼리

그리고 프록시가 안붙는다. (진짜 팀객체가 반환됨 )

-> 이제 엔티티 그래프로

똑같은 페치 조인

다른 두가지 방법도 있다.

엔티티 그래프를 쓰면 -> 페치조인을 쉽게 할 수 있다.
사실 JPA에서 제공 한다.

또다른 방법

JPA Hint & LOCK

스냅샷을 만들지 않아 업데이트가 이루어지지 않고 오직 조회만

정말 트래픽이 많은곳에 조회되는 경우 쓰는거지 전체에 다 최적화할때 넣어 봤자 소용이 없다.
중요한 곳에 이점이 있어야 넣는다.

이런 기능이 있다..

profile
어제의 나보다 한걸음 더

0개의 댓글