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


평범한 JPA 작성시


스프링데이터 JPA도 똑같네..
이름을 잘 지정해야됨 ..
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference
참조
그러나 조건이 많아지면 메소드 명이 길어짐
짤막한 쿼리들 구현하기 좋다.

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



이런식으로 흐름이 이어지는데
스프링 데이터 JPA는 좀더 간편하게 불러온다

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

통과


문법 오류가나도 애플리케이션 로딩할때 발견할 수 있다.
동적 쿼리는 쿼리 DSL로..
실무에서 많이 쓰는 기능
이름을 간략하게 복잡한 JPA를 쿼리로


Dto 조회는 어떻게?



이런게 있다..


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

옵셔널은 이렇게 반환

테스트 코드.
여러가지 타입이 반환된다 문서 참조도 가능
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types


offset은 몇번 째부터? Limit 총 출력 갯수
페이징과 정렬을 합쳤음

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


PageRequest.of 페이지 넘버 ,, 1 페이지 2페이지.. 신기하네
 
 타입만 슬라이스 바꾸면 +1 됨 (더보기 기능?)
totalcount 안함
반환타입을 컬렉션도 됨
 
분리가능
 
밑으로 변경 위조건은 카운트조건에 조인이 걸린다.
** api 꿀팁
 
맵으로 변환해서 반환하면 된다.
 모든 직원의 연봉을 10퍼센트 인상?
한번에 업데이트 하는방법을 알아보자
순수 JPA
 
 
결과
 
spring data JPA
 
 
@Modifying 어노테이션 필수
그런대 조심해야 되는 부분이 있다
벌크 연산은 엔티티관리 없이 디비에 빵~ 때려버림..
 
이런식으로 디비에 쿼리는 날렸지만 영속성에는 아직변화가..
그래서 영속성 클리어 해줘야됨
 
flush; 생략가능
또다른 방법
 
레이지 로딩 복습~
 
마지막 getNAme은 프록시 초기화 - > 이때! 쿼리 빠방 나간다.
-> 페치 조인으로 변경!
 
 
 
한방 쿼리
그리고 프록시가 안붙는다. (진짜 팀객체가 반환됨 )
-> 이제 엔티티 그래프로
 
 
똑같은 페치 조인
 
다른 두가지 방법도 있다.
 엔티티 그래프를 쓰면 -> 페치조인을 쉽게 할 수 있다.
사실 JPA에서 제공 한다. 
또다른 방법

 



스냅샷을 만들지 않아 업데이트가 이루어지지 않고 오직 조회만
정말 트래픽이 많은곳에 조회되는 경우 쓰는거지 전체에 다 최적화할때 넣어 봤자 소용이 없다.
중요한 곳에 이점이 있어야 넣는다.



이런 기능이 있다..