- 식별자로 조회
- EntityManager.find() 사용
- 정의
- 데이터베이스에서 엔티티를 식별자(ID)를 사용하여 조회하는 가장 기본적인 방법
- 엔티티 객체를 시작점으로 객체 그래프 탐색을 통해 관련됨 다른 엔티티들에 접근
- 코드
// EntityManager를 사용하여 ID로 엔티티 조회 MyEntity entity = entityManager.find(MyEntity.class, entityId);
- 객체 그래프 탐색
- 객체를 통해 연관된 다른 객체로 이동하는 것
a.getB()
getC() 같은 연쇄 호출을 통해 객체 접근
// 객체 그래프 탐색을 통한 연관 엔티티 탐색 Address address = member.getAddress(); City city = address.getCity();
- 복잡한 검색 요구 + JPQL
- 설명
- 단순 조회나 객체 그래프로는 복잡한 비즈니스 로직을 처리하기가 힘듭니다..
- 나이가 30살 이상인 회원 검색의 경우
- 해당 조건을 충족하는 검색기능이 필요함
- 모든 회원을 메모리에 로드할수는 없음.. → 데이터가 100만건이면 다 메모리에 띄우게?
- JPQL 을 사용하여 DB에서 필터링이 필요
// JPQL 사용 예시 TypedQuery<Member> query = entityManager.createQuery( "SELECT m FROM Member m WHERE m.age >= :age", Member.class); query.setParameter("age", 30); List<Member> members = query.getResultList();
- 설명
- 기타 JPA 지원 검색 방법
- 공식
- JPQL
- Criteria Query
- 네이티브 SQL
- 비공식
- QueryDSL
- JDBC 혹은 Mybatis 혼합
QueryDSL 이든 Criteria Query 든 JPQL 을 더 편리하게 작성하도록 도와주는 도구일 뿐이다.
- 공식
Uploaded by N2T
'자바 > JPA' 카테고리의 다른 글
[JPA] 값 타입 컬렉션 개요 (0) | 2023.11.09 |
---|---|
[JPA] 값 타입 컬렉션 제약사항과 대안적 접근 방법 (0) | 2023.11.09 |
[JPA] JPQL 소개 (0) | 2023.11.09 |
[JPA] JPQL 의 기본 문법과 쿼리 API (0) | 2023.11.09 |
[JPA] JPQL 파라미터 바인딩 (0) | 2023.11.09 |