1. 경로표현식점을 찍어 그래프를 탐색하는 것ex) select m.username from Member m경로 표현식에는 상태 필드, 단일 값 연관 필드, 컬렉션 값 연관 필드가 있다. 2. 상태 필드상태 필드란, 단순히 값을 저장하기 위한 필드다.(ex. m.username ) 오늘 예시로 사용할 Member 엔티티와 Team 엔티티다. ✅Member 엔티티@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "..
JPQL 기본 함수문자열, 숫자, 컬렉션 등의 처리를 돕는 함수다. ✔️CONCAT두 개 이상의 문자열을 연결한다.SELECT CONCAT(m.firstName, ' ', m.lastName) FROM Member m ✔️SUBSTRING문자열 일부를 추출한다.SELECT SUBSTRING(m.username, 1, 3) FROM Member m첫번째부터 세글자를 잘라낸다. ✔️TRIM문자열 앞,뒤 공백을 제거한다.SELECT TRIM(m.nickname) FROM Member m ✔️LOWER문자열을 소문자로 변환한다.SELECT LOWER(m.email) FROM Member m ✔️UPPER문자열을 대문자로 변환한다.SELECT UPPER(m.username) FROM Member m ✔️LENG..
1. CASE WHENSQL 문법과 동일하다. ✅예시String query = "select " + "case when m.age =60 then '경로요금' " + " else '일반요금' " + "end " + "from Member m";CASE WHEN 문법이 SQL과 동일해서 예시만 쓰고 넘어간다..(*JPQL은 문자열로 쿼리를 작성해서 문자열을 합치기 때문에 공백을 신경써줘야된다.) 2. COALESCE하나씩 조회해서 NULL이 아니면 반환하고 NULL이면 다음 인수를 반환한다.이 함수는 표준 SQL 함수다.코우얼레스,,,빨리 발음하면 '코올레스'로 읽으면 된다. ✅예시(1)sel..
1. ENUM 타입 표현ENUM 타입을 표현할 때 , '패키지명.ENUM클래스명.ENUM' 으로 표현한다.MemberType에 ADMIN, USER가 있다.MemberType이 ADMIN인 멤버를 조회해보자. ✅MemberType public enum MemberType { ADMIN,USER} ✅ENUM 타입 표현(1)String query = "select m.username from Member m " + "where m.type = jpql.MemberType.ADMIN";List result = em.createQuery(query, Object[].class) .getResultList();- jpql이라는 패키지에 MemberType 이라는 EN..
1. 페이징 APIsetFirstResult(int startPosition) : 조회 시작 위치 (0 부터 시작)setMaxResults(int maxResult): 조회할 데이터 수✅ 사용 예시 //페이징 API List result = em.createQuery("select m from Member m order by m.age desc", Member.class) .setFirstResult(10) .setMaxResults(20) .getResultList();이렇게 페이징API를 쓰면 10번 인덱스부터 20개의 결과를 받을 수 있다.JPQL을 사용하면 이렇게 페이징 처리가 편하다. 관계형 데이터베이스인 Oracle에서는 페이징처..
1. 프로젝션이란?- SELECT 절에 조회할 대상을 지정하는 것 2. 프로젝션 대상✔️엔티티, 임베디드 타입, 스칼라 타입(기본 데이터 타입) 관계형 데이터베이스는 테이블 내의 개별적인 값을 가지는 데이터들을 조회한다.예를 들어, Employees 테이블에 EmployeeID, Name, Age와 같은 속성에 있는 값을 조회하는 거다.프로젝션 대상이 스칼라 타입이라고 볼 수 있다. JPQL에서는 관계형 데이터베이스와 달리 조회 대상이 더 넓다. 3. 프로젝션 대상 이해하기 ✅ Member 엔티티 @Entity@Getter@Setterpublic class Member { @Id @GeneratedValue private Long id; private String username; ..
JPA 기본 | 객체지향 쿼리 언어 알아보기(JPQL, QueryDSL 등)1. JPQL1-1) JPQL이란?JPQL은 JPA에서 제공하는 객체지향 쿼리 언어 중 하나다.JPQL은 엔티티 객체를 대상으로 쿼리를 작성할 수 있게 해준다. 1-2) JPQL의 특징✔️ 객체지향 쿼리- 관계형 데이터베이스ururuwave.tistory.comJPQL이 무엇인지는 지난 포스팅에서 다뤘다. 1. 기본 문법1-1) JPQL은 엔티티 객체를 대상으로 쿼리를 작성한다. select m from Member as m where m.age > 18- 엔티티와 속성은 대소문자를 구분한다. (ex. Member, age)- JPQL 키워드는 대소문자를 구분하지 않는다.(ex.SELECT, FROM, where)- 별칭은 필수다..
1. JPQL1-1) JPQL이란?JPQL은 JPA에서 제공하는 객체지향 쿼리 언어 중 하나다.JPQL은 엔티티 객체를 대상으로 쿼리를 작성할 수 있게 해준다. 1-2) JPQL의 특징✔️ 객체지향 쿼리- 관계형 데이터베이스의 테이블이 아닌 엔티티 객체를 대상으로 쿼리를 작성할 수 있다.- 테이블과 컬럼 대신 엔티티 클래스와 필드를 참조한다. ✔️ 데이터베이스 독립성- 특정 데이터베이스에 종속되지 않고 독립적인 쿼리를 작성할 수 있다. -> JPQL은 SQL로 변환된다.- JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. ✔️ 표준화- JPQL은 JPA 표준에 포함되어 있어서 다양한 JPA 구현체(Hibernate 등)에서 동일하게 사용할 수 있다. 1-3) JPQL의 한계점-..