기본 프로젝트 세팅 > start.io.sring h2 시작하기 롬복 설정 + 실행 설정 변경 p6spy 설정
EntityManager를 통한 기본적인 CRUD 기능(Update는 변경감지를 이용하여 사용하기 때문에 없음)스프링 데이터 JPA가 제공하는 공통 인터페이스인 JpaRepository를 상속받는 인터페이스만 생성\--> 구현체는 스프링 데이터 JPA가 직접 생성 후
스프링 데이터 JPA의 핵심 기능기능메소드 이름으로 쿼리 생성(종종 사용 O)메소드 이름으로 JPA NamedQuery 호출 (거의 사용하지 X)@Query 어노테이션을 통해 Repository 인터페이스에 쿼리 직접 정의 (자주 사용 O): 메소드 이름을 분석해서
findByPage: 페이징을 하기 위한 offset과 limit을 받고, 정렬하기 위한 필드인 age를 받아 페이징 수행totalCount: 보통 페이징을 하면서 전체 데이터의 수를 많이 쓰기 때문에 거의 함께 필요함실제 페이징을 하면서 다양한 정보들이 필요현재 페이
벌크성 수정 쿼리@EntityGraphJPA Hint & Lock특정 하나가 아닌 다수의 데이터를 수정하는 쿼리를 말한다JPA에서는 데이터 수정시 '변경감지'를 통해 값을 수정한다변경 데이터가 많을 때 굳이 하나씩 '변경감지'를 일으켜서 하면 비효율적이다순수 JPA를
스프링 데이터 JPA에서는 JpaRepository를 상속받은 인터페이스를 사용@Query로 해결할 수 없는 메소드를 만들려면 구현체를 만들어야 하는데, 그렇다고 해당 인터페이스를 직접 상속받아서 모든 메소드를 구현할 수는 없다(구현체는 인터페이스에 정의된 모든 메소드
HTTP 파라미터로 넘어온 엔티티의 식별자로 엔티티 객체를 찾아서 바인딩하는 것받는 파라미터에 엔티티를 직접적으로 매칭하면 자동으로 조회를 해줌굳이 실무에서는 사용할일이 없고 인지만 하고 넘어가면 될 듯@PathVariavle로 넘어온 id값이 자동으로 member 엔
우리가 상속받아 사용하는 JpaRepository가 제공하는 공통인터페이스 구현체로 SimpleJpaRepository가 있다SimpleJpaRepository를 분석하여 우리가 당연하게 생각했던 것들을 알아볼 필요가 있다@Repository스프링 빈으로 등록되어 컴포
: 더 나은 대안이 있어서 실무에서는 잘 사용하지 않는 기능들(한번 알아두는 것은 나쁘지 않음)Projections네이티브 쿼리(Native Query)명세(Specifications) --> 절대 쓸 일 XQuery By Example --> 절대 쓸 일 XEntit