Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 지연 로딩
- Spring Security
- Database
- form login
- MySQL
- field column mapping
- 세션 고정 보호
- concurrentsessionfilter
- 양방향 매핑
- ddl-auto
- 값 타입 컬렉션
- 다대다
- @MappedSuperclasss
- spring jpa
- 동시 세션 제어
- SessionManagementFilter
- 상속관계 매핑
- orphanRemovel
- 기본 키 매핑
- 세션 생성 정책
- 객제지향 쿼리 언어
- 기본값 타입
- jpa
- 임베디드 타입
- 값 타입 비교
- Remember-me
- JPQL
- 즉시 로딩
- TABLE
- AnonymousAuthenticationFilter
Archives
- Today
- Total
hoondev
[Spring JPA] JPQL 프로젝션 본문
프로젝션
SELECT 절에 조회할 대상을 지정하는 것이 프로젝션이다.
프로젝션 대상은 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자 등 기본 데이터 타입)이 있다.
엔티티 프로젝션
SELECT m FROM Member m
SELECT m.team FROM Member m
임베디드 타입 프로젝션
SELECT m.address FROM Member m
스칼라 타입 프로젝션
SELECT m.username, m.age FROM Member m
DISTINCT로 중복제거
여러 값 조회
Query 타입으로 조회
List resultList = em.createQuery("select distinct m.username, m.age from Member m")
.getResultList();
Object o = resultList.get(0);
Object[] result = (Object[]) o;
System.out.println("result = " + result[0]);
System.out.println("result = " + result[1]);
이렇게 Object[]로 형변환을 해줘야 한다.
Object [] 타입으로 조회
List<Object[]> resultList = em.createQuery("select distinct m.username, m.age from Member m")
.getResultList();
Object[] result = resultList.get(0);
System.out.println("result = " + result[0]);
System.out.println("result = " + result[1]);
이렇게 하면 형변환 작업을 건너뛸 수 있다.
new 명령어로 조회
List<MemberDTO> result = em.createQuery("select new jpql.MemberDTO(m.username, m.age) from Member m", MemberDTO.class)
.getResultList();
MemberDTO memberDTO = result.get(0);
System.out.println("memberDTO = " + memberDTO.getUsername());
System.out.println("memberDTO = " + memberDTO.getAge());
new 명령어로 조회할 수 있다. 하지만 패키지 명을 포함한 전체 클래스 명을 입력해야 하기 때문에 불편하다.
순서와 타입이 일치하는 생성자도 필요하다. select new jpql.MemberDTO(m.username, m.age)에서 MemberDto에 username과 age를 받는 생성자가 필요한 것이다.
Reference
'Spring JPA' 카테고리의 다른 글
[Spring JPA] JPQL 페이징 (0) | 2023.02.16 |
---|---|
[Spring JPA] 기본 문법과 쿼리 API (0) | 2023.02.13 |
[Spring JPA] 객체지향 쿼리 언어 (0) | 2023.02.10 |
[Spring JPA] 값 타입 컬렉션 (0) | 2023.02.09 |
[Spring JPA] 값 타입의 비교 (0) | 2023.02.08 |
Comments