-
Notifications
You must be signed in to change notification settings - Fork 0
Native Query
samerook edited this page May 5, 2012
·
21 revisions
[Get Started](Get Started)
기본적으로 CRUD 작업을 할 때 JPA 기본 API를 사용하거나 QL을 이용하여 수행한다.
그러나 특정 DBMS에서 제공하는 기능을 사용할 수 있도록 하기 위해 Native SQL 사용을 지원한다.
entityManager.createNativeQuery() 메소드를 이용하여 Native SQL을 실행할 수 있다.
JPA SPEC
StringBuffer qlBuf = new StringBuffer();
qlBuf.append("SELECT * ");
qlBuf.append("FROM DEPARTMENT ");
qlBuf.append("WHERE DEPT_NAME like :condition ");
qlBuf.append("ORDER BY DEPT_NAME");
Query query = em.createNativeQuery(qlBuf.toString(),Department.class);
query.setParameter("condition", "%%");
List deptList = query.getResultList();
위와 같이 정의된 SQL문을 통해 조회 조건에 맞는 Department 객체의 List가 리턴된다.
WHERE절에서 ':'을 사용하여 Named Paramenter를 통해 조회 조건을 완성할 수 있다.
조회 조건의 값은 Query의 setParameter() 메소드를 통해 지정해 주고 있다.
또한, createNativeQuery의 두번재 인자로 리턴받고자하는 Entity 클래스(Department.class)를 지정한 것을 확인할 수 있다.
작동확인 코드
Query query = entityManager.createNativeQuery("SELECT * FROM Music WHERE artist = :artist", Music.class);
Music music = (Music) query.setParameter("artist", "Sunyong").getSingleResult();
System.out.println(music);