NativeQuery
=> @Query 속성으로 nativeQuery=true!!
=> == jpql이 아닌 sql!! (db의 언어에 따라 적어줘야 함.. jpa의 장점을 사용하지 못함😉
테스트 디비는 h2데베 , 실제는 mysql을 사용하는 입장으로써 다르게 적용해줘야 할 수도 있음)
=> 객체가 아닌 테이블과 필드명으로 조회해야하고, 엔티티에서 걸어놨던 제약조건들을 전혀 적용하지 않는다. 즉, 값으로 적어준 쿼리 그대로 실행해서 db값들을 그대로 가져온다.
*jpa의 deleteAllInBatch처럼 한번의 쿼리로 전체를 할 수 있게 하기도 한다. (jpa에는 없음.)
=> sql에 update 테이블 set 필드명=값 <<이 필드 전체 값을 업데이트 하는 것!!
=> 반환값은 void일 수도 있고, int로 바뀐 행 개수를 반환할 수도 있다.
=> @Modifying과 @Transactional을 달아준다.
=> 인터페이스의 쿼리나 사용처에서(여기선 테스트메서드) 트랜잭션을 걸 수 있다.
* jpa에서 제공하지 않은 기능등을 이용할때도 활용한다. => ex. show tables…
* 데이터들의 실제 값을 string으로 가져와서 확인하는데도 쓰인다.(ex. enum의 string값이 아닌 상수값)
*Map<String,Object>로 가져오면 전체 필드명:값을 출력함 (key=필드명, value=값)
Comment