10.5 네이티브 SQL 사용
// 결과 타입 정의
public Query createNativeQuery(String sqlString, Class resultClass);
// 결과 타입 정의할 수 없음
public Query createNativeQuery(String sqlString);
// 결과 매핑 사용
public Query createNativeQuery(String sqlString, String resultSetMapping);
엔티티 조회
//SQL 정의
String sql =
"SELECT ID, AGE, NAME, TEAM_ID " +
"FROM MEMBER WHERE AGE > ?";
Query nativeQuery = em.createNativeQuery(sql, Member.class)
.setParameter(1, 20);
List<Member> resultList = nativeQuery.getResultList();
중요한 점
네이티브 SQL로 SQL만 직접 사용할 뿐, 나머지는 JPQL을 사용할 때와 같다.
조회된 엔티티도 영속성 컨텍스트에서 관리.
값 조회
// SQL 조회
String sql =
"SELECT ID, AGE, NAME, TEAM_ID " +
"FROM MEBER WHERE AGE > ?"
Query nativeQuery = em.creatNativeQuery(sql)
.setParamter(1, 10);
List<Object[]> resultList = nativeQuery.getResultList();
```