질문1. 파라미터 바인딩에 대해
실전! 스프링 데이터 JPA 강의 초반에 설명드리는 내용을 한번 떠올려 보시면 3가지로 기능을 분류했던 기억이 나실꺼에요.
1. 공통메서드
2. 메소드 이름으로 쿼리 작성
3. @Query 사용
@Param은 @Query를 사용할 때만 적용됩니다. findByUserId()는 메소드 이름으로 쿼리를 작성하는 방법인데요. 이때는 @Param과 무관하게 순서만 맞추면 됩니다.
질문2. 벌크 연산에 대해
네 잘 파악하셨습니다. 둘은 거의 비슷하고, 차이는 네이티브 SQL을 사용하는가? 아니면 JPQL을 사용하는가?의 차이로 이해하시면 됩니다.
질문3. 쿼리 힌트에 대해
쿼리 힌트와 @Transactional(readOnly = true)는 서로 다른 기능입니다.
@Transactional(readOnly = true)는 스프링이 제공하는 트랜잭션 관리 기능이고, 여기서는 트랜잭션을 읽기 전용으로 사용하는 옵션을 넣었습니다.
반면에 쿼리 힌트는 하이버네이트 같은 JPA 구현체에게 제공하는 기능입니다. (사실 잘 사용하지는 않습니다.)
감사합니다.