이런건 어떻게 해결하지..
평범한 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에서 제공 한다.
또다른 방법
스냅샷을 만들지 않아 업데이트가 이루어지지 않고 오직 조회만
정말 트래픽이 많은곳에 조회되는 경우 쓰는거지 전체에 다 최적화할때 넣어 봤자 소용이 없다.
중요한 곳에 이점이 있어야 넣는다.
이런 기능이 있다..