가장 단순한 조회 방법
EntityManager.find()
객체 그래프 탐생 (a.getB().getC())
그러나? 나이가 18살 이상인 회원을 모두 검색하고 싶다면 ?
엔티티대상으로 검색하면 -> sql 로 변해서 디비로..
위에 JPQL은 사실은 단순한 스트링이다.
동적 쿼리를 만들기 어려움.
여러가지 문제점이.. 띄어 쓰기도 해결 해야되고..
동적 쿼리 짜기 좋다.
알아보기가 어려워서.. 잘 안씀
이 부분은 다른 강의쪽에서
JPQL(문법) 잘하면 쿼리 디에스엘은 자동으로 잘하게 됨.
JPQL 프로젝트 하나 더만들어서 셋팅
결과 조회 API
결과가 없을때 익셉션이 터지네..
그러나 getSingleResult -> null 이나 옵셔널 반환되도록 짜져있음
Spring Data JPA --> 결과가 없으면 옵셔널로 반환 (익셉션 안터트리게)
위치 기반은 안쓰는게 좋다
SELECT 절에 조회할 대상을 지정하는 것
프로젝션 대상 : 엔티티 ,임베디드 타입 , 스칼라 타입 (숫자 ,문자등 기본데이터타입)
엔티티 프로젝션을 하면 영속성 컨텍스트에 관리가 된다.
임베디드타입
스칼라 타입 sql 이랑 비슷비슷
- > 문자기 때문에 다적어줘야됨..
JPA는 페이징을 다음 두 API로 추상화
setFirstResult(int startPosition) / setMaxResults 조회 시작 위치와 조회할 데이터수
H2 다이렉트는 limt ? offset ? 이 표준 페이징
엔티티 중심을 객체스타일로 작성 된다.
세타조인 연관관계가 없는 막조인..?
left 도 적용가능 (Outer) 생략가능
예제가 많은대.. 다 sql 문지랑 비슷하다..
sql 이랑 같다..
From절 서브 쿼리를 쓰고 싶다면 ..?
native sql 써야됨 / 아니면 분해해서 날리거나..
이런식으로 타입 으로 조회 가능
기본 Sql 문법이라 딱히 보고만 가도 나쁘진않을거 같다.
이런식으로 만든다.
여기서 안돼면.. 사용자 정의 함수를 써야된다.
그냥 쓸수 있는건 아니고 데이터베이스 방언에 추가 해야 된다.. 어떻게하지..
DB종속적이지만 함수가 다 등록되있다.
컬렉션의 값
현재는 팀이 들어간게 없어서 0?
사용자 정의함수
이런식도 가능
외우진 못하고 소스코드를 열어봐서..