inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

강의 내용 질문드립니다.

139

whdk333

작성한 질문수 31

0

package jpabook.jpashop.domain.repository;

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.PersistenceUnit;
import jpabook.jpashop.domain.Member;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
@RequiredArgsConstructor
public class MemberRepository {


    private final EntityManager em;

    public void save(Member member) {
        em.persist(member); 
    }

    public Member findOne(Long id) {
        return em.find(Member.class, id); 
    }

    public List<Member> findAll() { // 회원 목록 조회
        return em.createQuery("select m from Member m", Member.class) ry
                .getResultList(); 
    }

    public List<Member> findByName(String name) {
        return em.createQuery("select m from Member m where m.name = :name", Member.class)
                .setParameter("name", name)
                .getResultList();
    }
}

 

  1. 위의 코드에서 findByName메소드에서 왜 단건조회가 아닌 리스트 조회를 사용한건가요? 어차피 중복가입은 안되고 이름으로 조회하니까 하나의 결과가 나와야하는거 아닌가요?

  2. findByName 메소드에서 setParameter은 왜 있는건가요? 설명부탁드릴게요.

     

 

김영한강사님 엔티티 강의 질문 스프링 spring jpa

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

  1. findByName메소드에서 리스트 조회를 사용한 이유는 사용자의 이름으로 조회 시, 이름이 같은 여러 회원이 존재할 수 있으므로, 여러 결과값을 받아오기 위해 리스트로 조회하는 것입니다. 실제 서비스에서는 중복가입이 안된다고 해도 시스템의 유연성을 위해 또는 다른 요인으로 인해 같은 이름을 가진 사용자가 여러명 있을 수 있기 때문입니다.

  2. findByName 메소드에서 setParameter를 사용하는 이유는 쿼리에 동적으로 파라미터를 바인딩하기 위해서입니다. 쿼리 실행 시, :name 부분에 메소드에 전달된 name 변수의 값을 대입하여 실행합니다. 이런 방식을 사용함으로써, 쿼리의 안정성을 높이고 SQL 인젝션 같은 보안 문제를 예방할 수 있습니다.

제공된 정보에는 쿼리 메소드와 관련된 자세한 설명이 포함되어 있지 않아, 질문에 대한 답변은 일반적인 JPA 사용법과 관례에 기반하여 제공되었습니다.

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

15

2

중복내용 제보?!

1

20

2

여러 파드 환경에서 단일 실행 보장 방식

0

24

2

inheritance startegy 선택시 고려사항

0

21

1

Entity 동등성 비교

0

18

1

패키지 구분에 대해 궁금한게 있습니다

0

25

2

스프링부트 서버 에러나요

0

26

1

코드 자료

0

50

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

40

2

servlet과 container에 대한 질문입니다

0

29

1

RepositoryTest의 패키지 위치가 domain인 이유

0

36

2

도메인 모델에서 관계와 규칙을 구분하는 방법

0

49

2

16 강의 메세지 retryCount의 의도

0

29

2

JPA Repository 질문이 있습니다!

1

38

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

38

1

UserService, CertificationService 책임 분리 기준 질문

0

28

1

spring initialiser 어떤걸 선택해야될지 모르겠어요

0

38

2

구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?

0

56

2

Json 요청 처리

1

40

2

로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.

0

28

2

Build 관련 문제 (테스트 관련 문제)

0

44

2

job, step execution 관련 질문 드립니다.

0

44

2

실무 조언 관련 질문입니다.

0

44

1

이미지 업로드와 db 트랜잭션 묶는법

0

46

1