스프링 프레임워크 + JPA에 특화된 기능 제공
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByName(String name);
}
save(S)
: 새로운 엔티티는 저장하고 이미 있는 엔티티는 수정한다.delete(T)
: 엔티티 하나를 삭제한다. (em.remove())findOne(ID)
: 엔티티 하나를 조회한다. (em.find())getOne(ID)
: 엔티티 하나를 프록시로 조회한다. (em.getReference())findAll()
: 모든 엔티티를 조회한다. Sort나 Pageable을 파라미터로 제공할 수 있다.메소드 이름으로 쿼리 생성
Spring Data JPA - Reference Documentation
@Query
사용해서 Repository interface에 쿼리 직접 정의Member findByUserName(@Param("name") String username);
@Modifying
@Query("update Product p set p.price = p.price * 1.1 where p.stockAmount < :stockAmount")
int bulkPriceUp(@Param("stockAmount") String stockAmount);
@Modifying(clearAutomatically = true)
: 벌크성 쿼리 실행 후 Persistence Context 초기화PageRequest pageRequest = new PageRequest(0, 10, new Sort(Direction.DESC, "name"));
Page<Member> result = memberRepository.findByNameStartingWith("김", pageRequest);
PageRequest pageRequest = new PageRequest(0, 10, new Sort(Direction.DESC, "name"));
Page<Member> result = memberRepository.findByNameStartingWith("김", pageRequest);