회원 레퍼지토리 개발
2023. 5. 10. 07:52ㆍ카테고리 없음
package jpabook.jpashop.repository;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jpabook.jpashop.domain.Member;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@RequiredArgsConstructor
public class MemberRepository {
//스프링부트가 알아서 Autowired를 사용함.
private final EntityManager em;
// EntityManager : 데이터베이스랑 작업을 하게 되는데, findAll이나
public void save(Member member) { // persist 하면 트랜젝션이 커밋되는 시점에서 db에 반영이 됨.(insert query)
em.persist(member);
}
public Member findOne(Long id) {
return em.find(Member.class, id);//첫번째는 타입이고 두번째는 PK를 넣어주면 됨.
}
public List<Member> findAll() {
return em.createQuery("select m from Member m", Member.class) //jpql의 문법은 sql과 같은데
// 이제 from으로 넘어오는 상대가 tabled이 아니라 entity가 넘어오면 됨.
//sql은 테이블을 대상으로 query를 함, jpql은 엔티티 객체에 대해 query를 함.
.getResultList();
}
public List<Member> findByName(String name) { // 파라미터를 name으로 넘기고,
return em.createQuery("select m from Member m where m.name = :name",//바인딩..?
Member.class)
.setParameter("name", name)
.getResultList();
}
}
출처 : 인프런 강의: 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발