스프링데이터 + JPA/웹 애플리케이션 개발

12. 회원 리포지토리

sdafdq 2023. 11. 6. 09:31
@Repository
public class MemberRepository {
    @PersistenceContext
    private EntityManager em;

    public Long save(Member member){
        em.persist(member);
        return member.getId();
    }

    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)
                .getResultList();
    }

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

 

@PersistenceContext 직역 영속성 컨텍스트인데, 이거 해 놓으면 알아서 스프링에서 영속성 컨텍스트 관리자인 엔티티 매니저 주입해 줌.

 

근데 

@Repository
@RequiredArgsConstructor
public class MemberRepository {
    private final EntityManager em;

이렇게 하는 것도 좋음. 주입해줌.

 

만약 엔티티 매니저 팩토리를 받고 싶으면

@PersistenceUnit 해서

private EntityManagerFactory emf

해서 받으면 됨.

 

그 외에 뭐

이게 아무래도 jpa는 단건 조회를 주로 지원 하는 듯.

전체조회는 쿼리를 써야 함.

 

저렇게 파라미터 바인딩 할 수도 있고.

 

'스프링데이터 + JPA > 웹 애플리케이션 개발' 카테고리의 다른 글

14. 회원 테스트  (0) 2023.11.06
13. 회원 서비스  (0) 2023.11.06
11. 애플리케이션 아키텍처  (0) 2023.11.05
10. 구현 요구사항  (0) 2023.11.05
9. 엔티티 개발 주의점  (0) 2023.11.05