Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
more
Archives
Today
Total
관리 메뉴

쿵쿵일지

객체지향 쿼리 언어 본문

java/JPA

객체지향 쿼리 언어

노마지 2016. 6. 1. 22:30

객체지향 쿼리 언어

객체지향 쿼리 소개

JPQL

JPQL은 엔티티 객체를 조회하는 객체지향 쿼리.

문법은 SQL과 비슷함.

JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다.

데이터베이스 Dialect만 변경하면 JPQL을 수정하지 않아도 자연스럽게 데이터베이스를 변경할 수 있다.

@Entity(name = "Member")
public class Member {
    @Column(name = "name")
    private String userName;
}
String jpql = "select m from Member as m where m.userName = 'kim'";
List<Member> resultList = em.createQuery(jpql, Member.class).getResultList();

Criteria 쿼리

Criteria는 JPQL을 생성하는 빌더 클래스다.

Criteria의 장점은 문자가 아닌 query.select(m).where(...)처럼 프로그래밍 코드로 JPQL을 작성할 수 있다는 점.

Query Dsl

QueryDSL도 Criteria처럼 JPQL 빌더 역할을 한다. QueryDSL의 장점은 코드 기반이면서 단순하고 사용하기 쉽다.

JPAQuery query = new JPAQuery(em);
QMember meber  = QMember.member;

List<Member> members = 
    query.from(member)
        .where(member.userName.eq("kim"))
        .list(member);

네이티브 SQL

JPQL을 사용해도 가끔은 특정 데이터베이스에 의존하는 기능을 사용해야 할 때가 있다. 네이티브 SQL의 단점은 특정 데이터베이스에 의존하는 SQL을 작성해야 한다는 것.

'java > JPA' 카테고리의 다른 글

값 타입  (0) 2016.06.01
프록시와 연관관계 관리  (0) 2016.05.25
다양한 연관관계 매핑  (0) 2016.05.07
연관관계 매핑 기초  (0) 2016.05.06
엔티티 매핑  (0) 2016.04.18