Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

JPA NamedQuery 본문

인프런/[인프런] Spring Data JPA

JPA NamedQuery

Seung__ 2021. 8. 28. 12:33
  • 쿼리에 이름을 부여하고 호출하는 기능
  • 쓸 일이 거의 없음 ㅋㅋㅋㅋ

 

1. Member Entity


  • @NamedQuery에 쿼리 이름 및 쿼리 작성.
  • 음..? 엔티티에 쿼리를..?
@Entity
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "userName", "age"})
@NamedQuery(
        name = "Member.findByUserName",
        query = "select m from Member m where m.userName = :userName"
)
public class Member {

 

 

2. MemberJPARepository


  • em.createNamedQuery 사용
 public List<Member> findByUserName(String userName){
        return em.createNamedQuery("Member.findByUserName", Member.class)
                .setParameter("userName", "member1")
                .getResultList();
    }

 

3. MemberRepository : springDataJPA


  • @Query를 사용하여 쉽게 쿼리를 불러올 수 있다.
  • @Param을 적용해야 naedQuery로 넘어갈 때 "userName"으로 param을 넘겨줄 수 있음.
public interface MemberRepository extends JpaRepository<Member, Long> {

    public List<Member> findMemberByUserNameAndAgeGreaterThan(String userName, int age);

    @Query(name = "Member.findByUserName")
    List<Member> findByUserName(@Param("userName") String userName);

}

 

4. 정리


  • SpringDataJPA에서 제공하는 @Query를 사용하면 repository의 method에 바로 쿼리 정의 가능
  • 그래서 @NamedQuery를 잘 사용 안함.
  • 그러나 NamedQuery를 사용하면 애플리케이션 실행 시점에 오류를 잡을 수 있다. 가장 큰 장점 ㄷㄷ

5. GitHub : 210828 NamedQuery

 


 

GitHub - bsh6463/SpringDataJpa

Contribute to bsh6463/SpringDataJpa development by creating an account on GitHub.

github.com

 

Comments