728x90
JPQL 소개
• JPQL은 객체지향 쿼리 언어다. 따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다.
• JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하 지 않는다.
• JPQL은 결국 SQL로 변환된다.
• 엔티티와 속성은 대소문자 구분O (Member, age)
• JPQL 키워드는 대소문자 구분X (SELECT, FROM, where)
Entity 이름 사용 ( table name X)
@Entity(name = "Member")
별칭은 필수(m) (as는 생략가능)
select m from Member as m where m.age > 18
• TypeQuery: 반환 타입이 명확할 때 사용
• Query: 반환 타입이 명확하지 않을 때 사용
TypedQuery<Member> query = em.createQuery("select m from Member m ", Member.class);
//Type이 명확하면 클래스 정확하게 가져오면 된다. 만약 두개 다르면 TypeQuery대신 그냥 Query
query.getResultList(): 결과가 하나 이상일 때, 리스트 반환
• 결과가 없으면 빈 리스트 반환
query.getSingleResult(): 결과가 정확히 하나, 단일 객체 반환
만약 하나가 아니면 예외가 발생한다.
데이터 베이스 관계없이 써도 된다.
• CONCAT
• SUBSTRING
• TRIM
• LOWER, UPPER
• LENGTH
• LOCATE
• ABS, SQRT, MOD
• SIZE, INDEX(JPA 용도)
이게 안되면
사용자 정의 함수 호출을 하면 된다.
사용하는 DB 방언을 상속받고, 사용자 정의 함수를 등록한다.
select function('group_concat', i.name) from Item i
728x90
'JPA' 카테고리의 다른 글
페이징 API , Join (0) | 2024.11.08 |
---|---|
JPA의 다양한 쿼리방법 (0) | 2024.08.30 |
JPA 기본 값 타입 (7) | 2024.08.28 |
JPA 고아객체 (0) | 2024.08.25 |
JPA 영속성 전이 CASCADE (0) | 2024.08.25 |