
JPA의 기능을 간편하게 사용할 수 있도록 해줌원래대로면 필요한 메소드를 사용자가 만들어야 하지만 Spring Data JPA가 공통메소드는 대신 만들어준다예)interface로 만들지만 사용할 수 있는 이유는 Spring Data JPA가 프록시 객체를 만들어준다.@

메소드 이름을 분석해서 JPQL 쿼리 실행필드명 변경시 메소드도 변경해야함공식문서https://docs.spring.io/spring-data/jpa/reference/- 조회: find…By ,read…By ,query…By get…By, https

메소드 이름으로 JPA NamedQuery 호출 스프링 데이터 JPA는 선언한 "도메인 클래스 + .(점) + 메서드 이름"으로 Named 쿼리를 찾아서 실행 만약 실행할 Named 쿼리가 없으면 메서드 이름으로 쿼리 생성 전략을 사용한다. 필요하면 전략을 변경할 수

실행할 메서드에 정적 쿼리를 직접 작성하므로 이름 없는 Named 쿼리라 할 수 있음JPA Named 쿼리처럼 애플리케이션 실행 시점에 문법 오류를 발견할 수 있음값DTOCollection 타입으로 in절 지원

유연한 반환 타입 지원컬렉션 결과 없음: 빈 컬렉션 반환 단건 조회 결과 없음: null 반환 결과가 2건 이상:javax.persistence.NonUniqueResultException 예외 발생

JPA Spring Data JPA

벌크성 수정, 삭제 쿼리는 @Modifying 어노테이션을 사용 사용하지 않으면 다음 예외 발생 org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations 벌크성

사실상 페치 조인(FETCH JOIN)의 간편 버전 LEFT OUTER JOIN 사용

SQL 힌트가 아니라 JPA 구현체에게 제공하는 힌트

규칙: 리포지토리 인터페이스 이름 + Impl 스프링 데이터 JPA가 인식해서 스프링 빈으로 등록실무에서는 주로 QueryDSL이나 SpringJdbcTemplate을 함께 사용할 때 사용자 정의 리포지토리 기능 자주 사용스프링 데이터 2.x 부터는 커스텀인터페이스 명

등록일, 수정일, 등록자, 수정자 추적

HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩HTTP 요청은 회원 id 를 받지만 도메인 클래스 컨버터가 중간에 동작해서 회원 엔티티 객체를 반환도메인 클래스 컨버터도 리파지토리를 사용해서 엔티티를 찾음도메인 클래스 컨버터로 엔티티를 파라미터

파라미터로 Pageable 을 받을 수 있다. Pageable 은 인터페이스, 실제는 org.springframework.data.domain.PageRequest 객체 생성요청 파라미터예) /members?page=0&size=3&sort=id,desc&sort=us

Spring Data JPA에서 save()를 하게되면 이 객체가 새로운 것인지 아닌지 id값을 가지고 판단한다그런데 id값을 자동으로 주입하지 않는 경우 키값을 기본적으로 넣게되는데 이렇게 되면 기존에 쓰던 객체로 판단한다이런 경우 Persistable 인터페이스를

실무 사용 X참 또는 거짓으로 평가 AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성(컴포지트 패턴) 예) 검색 조건 하나하나 스프링 데이터 JPA는 org.springframework.data.jpa.domain.Specification 클래스로 정의S

Probe: 필드에 데이터가 있는 실제 도메인 객체 ExampleMatcher: 특정 필드를 일치시키는 상세한 정보 제공, 재사용 가능Example: Probe와 ExampleMatcher로 구성, 쿼리를 생성하는데 사용장점동적 쿼리를 편리하게 처리 도메인 객체를 그대

엔티티 대신에 DTO를 편리하게 조회할 때 사용 전체 엔티티가 아니라 만약 회원 이름만 딱 조회메서드 이름은 자유, 반환 타입으로 인지조회할 엔티티의 필드를 getter 형식으로 지정하면 해당 필드만 선택해서 조회(Projection)스프링의 SpEL 문법도 지원SpE

가급적 네이티브 쿼리는 사용하지 않는게 좋음, 정말 어쩔 수 없을 때 사용 최근에 나온 궁극의 방법 스프링 데이터 Projections 활용페이징 지원반환 타입 Object\[] Tuple DTO(스프링 데이터 인터페이스 Projections 지원) 제약 Sort 파라