반응형
이 글은 인프런의 김영한 강사님 자바 ORM 표준 JPA 프로그래밍-기본 편 강의 내용을 바탕으로 작성되었습니다.
테이블과 객체 모델의 관계
간단한 JPQL을 활용하여 쿼리 사용하기
TypedQuery<Member> query = em.createQuery("select m from Member m", Member.class);
List<Member> resultList = query.getResultList();
Member result = query.getSingleResult();
JPQL을 활용하여 쿼리에 조건문 달기
Member sigleREsult = em.createQuery("select m from Member m where m.username = :username", Member.class)
.setParameter("username", "member1")
.getSingleResult();
JPA에서 페이징 기법
List<Member> result = em.createQuery("select m from Member m order by m.age desc", Member.class)
.setFirstResult(0)
.setMaxResults(10)
.getResultList();
System.out.println("result.size = "+ result.size());
JPA 조인하기
String query = "select m from Member m inner join m.team t";
List<Member> result = em.createQuery(query, Member.class)
.getResultList();
JPA 조인 대상 필터링하기
String query = "select m from Member m left join m.team t on t.name = 'teamA'";
List<Member> result = em.createQuery(query, Member.class)
.getResultList();
연관관계 없는 외부 조인하기
String query = "select m from Member m left join Team t on m.username = t.name";
List<Member> result = em.createQuery(query, Member.class)
.getResultList();
select에 타입이 들어가기
String query = "select m.username, 'HELLO', true from Member m " +
"where m.type = :userType";
List<Object[]> result = em.createQuery(query)
.setParameter("userType", MemberType.ADMIN)
.getResultList();
조건문쿼리 - case
String query = "select " +
"case when m.age <= 10 then '학생요금' " +
"when m.age >= 60 then '경로요금' " +
"else '일반요금' " +
"end " +
"from Member m";
List<String> result = em.createQuery(query, String.class).getResultList();
coalesce 함수
String query = "select coalesce(m.username, '이름 없는 회원') from Member m";
List<String> result = em.createQuery(query, String.class).getResultList();
nullif
String query = "select nullif(m.username, '이름 없는 회원') from Member m";
List<String> result = em.createQuery(query, String.class).getResultList();
그 외에 jpql 기본 함수
String query = "select 'a' || 'b' From Member m";
String query = "select concat('a','b') From Member m";
String query = "select subString(m.username, 2, 3) From Member m";
String query = "select locate('de','abcdefg') From Member m";
List<Integer> result = em.createQuery(query, String.class).getResultList();
반응형
'spring > JPA' 카테고리의 다른 글
[JPA] 값타입 (0) | 2023.12.12 |
---|---|
[JPA] 프록시와 연관관계 관리 (1) | 2023.12.11 |
[JPA] 고급매핑 (0) | 2023.12.11 |
[JPA] 다양한 연관관계 매핑 (0) | 2023.12.08 |
[JPA] 연관관계 매핑 기초 (2) | 2023.12.07 |