회원 리포지토리 개발
기술 설명
@Repository : 스프링 빈으로 등록, JPA 예외를 스프링 기반 예외로 예외 변환
@PersistenceContext : 엔티티 메니저( EntityManager ) 주입
@PersistenceUnit : 엔티티 메니터 팩토리( EntityManagerFactory ) 주입
기능 설명
save() 영속성 컨텍스트에 Member 객체 넣는다. 트랜잭션이 커밋되는 시점에 DB에 반영된다!(DB에 insert 쿼리가 들어간다!)
EntityManager.persist(member);
findOne() JPA의 find메서드 사용 find(타입,PK)
return em.find(Member.class,id);
findAll() JPQL : SQL과 거의 똑같은데 from의 대상이 테이블이 아니라 엔티티다! EntityManager.creatQuery(JPQL쿼리, 조회 타입)
return em.createQuery("select m from Member m",Member.class) .getResultList();
findByName() 파라미터 바인딩(where m.name = :name)해서 특정 이름의 회원들만 조회한다!
return em.createQuery("select m from Member m where m.name = :name",Member.class) .setParameter("name",name) .getResultList();
package jpabook.jpashop.repository;
import jpabook.jpashop.domain.Member;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;
@Repository
public class MemberRepository {
@PersistenceContext
private 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)
.getResultList();
}
// m.name = :name 파라미터 바인딩해서 특정 이 회원들만 조회
public List<Member> findByName(String name){//,Member.class : 조회 타입은 Member
return em.createQuery("select m from Member m where m.name = :name",Member.class)
.setParameter("name",name)
.getResultList();
}
}
Last updated
Was this helpful?