findUser(@Param("username") String username, @Param("age") int age);"> findUser(@Param("username") String username, @Param("age") int age);"> findUser(@Param("username") String username, @Param("age") int age);">
@Query("select m from Member m where m.username = :username and m.age = :age")
List<Member> findUser(@Param("username") String username, @Param("age") int age);
레포지토리에 바로 쿼리를 쓸 수 있다.
이 방법을 실무에서 많이 쓴다.
@Test
public void testQuery() {
Member m1 = new Member("AAA", 10);
Member m2 = new Member("AAA", 20);
memberRepository.save(m1);
memberRepository.save(m2);
List<Member> result = memberRepository.findUser("AAA", 10);
assertThat(result.get(0)).isEqualTo(m1);
}
이 기능의 장점은 정적 쿼리이기 때문에 애플리케이션 로딩 시점에 오류 검증이 가능하다.
이름이 없는 네임드 쿼리다.
그렇다면 동적쿼리는?
QueryDSL을 사용해야 한다.