사용한 쿼리문을 순수하게 가져온 것을 의미, 우리가 사용하는 SQL을 사용할 수 있도록 해준다.
BUT 가급적 네이티브 쿼리는 어쩔 수 없는 상황에만 사용하자.
@Query(value = "select * from article, nativeQuery = true)
List<Article> findAll();
파라미터 사용방법
@Query(value = "select m from Member mwhere m.id > ?1")
public List<Member> selectJPQLById1(int id);
nativeQuery 속성이 false 이면 JPQL이다.
@Query("SELECT m FROM Member M") // JPQL
@Query("SELECT m.* FROM Member m", nativeQuery = true) // SQL
select 구문이 아닌 DML(insert, update, delete) 구문 사용 시
@Query(value = "update Member set name = :#{#paramMember.name}, price = :#{#paramMember.price} where id = :#{#paramMember.id}")
@Modifying
@Transactional
public int updateJPQL(@Param(value = "paramMember") Member member);
장점
단점
참고
https://velog.io/@betaa06/JPA%EC%97%90%EC%84%9C%EC%9D%98-Native-Query
https://imprint.tistory.com/149
https://jforj.tistory.com/90