Skip to content
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);

Clone this wiki locally