[DataJpa] Named Query

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