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을 사용해야 한다.