JPA Named 쿼리
- 쿼리에 이름을 부여하여 사용하는 방식
- xml , 어노테이션으로 가능하다.
예제
@NamedQuery(
name = "Member.findByName",
query = "select m from Member m where m.name = :name"
)
public class Member {
@Test
void testNamedQuery() {
List<Member> resultList = em
.createNamedQuery("Member.findByName", Member.class)
.setParameter("name", "상준")
.getResultList();
System.out.println("resultList = " + resultList);
}
select m1_0.id,m1_0.name from member m1_0 where m1_0.name='상준';
resultList = [Member(id=1, name=상준)]
- datajpa로 named 쿼리를 호출해보자
@Test
void testNamedQueryByDatajpa() {
List<Member> member = memberRepository.findByName("상준");
System.out.println("member = " + member);
}
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByName(@Param("name") String name);
}
select m1_0.id,m1_0.name from member m1_0 where m1_0.name='상준';
member = [Member(id=1, name=상준)]
- datajpa 를 사용시 호출부가 매우 짧아진다.
- 다만.. 간단한 경우에만 유용할듯하다.
- 복잡하면
- QueryDsl 을 사용하자
- 하지만 쿼리 Dsl 도 완벽하진 않다는점을 알아두자..
- 간혹 네이티브나 mybatis 를 곁들여야 할 때도 있다고 한다.
Uploaded by N2T
'자바 > QueryDsl' 카테고리의 다른 글
[DataJpa] 데이터 JPA 공통 인터페이스 (0) | 2023.11.15 |
---|---|
[DataJpa] 쿼리 메서드 기능 (0) | 2023.11.15 |
[DataJpa] Named Query (0) | 2023.11.15 |
[QueryDSL] 그룹과 조인 (0) | 2023.11.15 |
[QueryDSL] 페이징과 정렬 (0) | 2023.11.15 |