<aside> ❗
public interface MemberRepository extends JpaRepository<Member, Long> {
// select m from Member m where m.name = ? 형식으로 SQL을 짜버린다.
List<Member> findByName(String name);
}
findByName
처럼 일반화 하기 어려운 기능도 **메서드 이름으로 정확한 JPQL 쿼리를 실행
**한다.
select m from member m where [m.name](<http://m.name>) = :name
스프링 데이터 JPA는 스프링과 JPA를 활용해서 애플리케이션을 만들 때, 정말 편리한 기능을 많이 제공한다. 단순히 편리함을 넘어서 때로는 마법을 부리는 것 같을 정도로 놀라운 개발 생산성의 세계로 우리를 이끌어 준다.
하지만 스프링 데이터 JPA는 JPA를 사용해서 이런 기능을 제공할 뿐이다.
결국 JPA 자체를 잘 이해하는 것이 가장 중요하다.
분석, 설계 → 모델링 → 엔티티 설계 → DB 테이블 설계
→ 한계를 알고 사용해야 한다. 그렇지 않으면 롤백하게 됨
→ 페이징 쿼리시 토탈 카운트 잘못 사용하면 분리해서 사용해야 함
</aside>