복붙노트

[SPRING] Spring 데이터 findBy / findAllBy 간의 JPA 차이점

SPRING

Spring 데이터 findBy / findAllBy 간의 JPA 차이점

다음 기간 동안 Spring 데이터 JPA 키워드를 사용할 때 어떤 차이가 있습니까?

List<SomeEntity> findBySomeCondition();

List<SomeEntity> findAllBySomeCondition();

해결법

  1. ==============================

    1.아니요, 둘 사이에 차이점이 없습니다. 정확히 같은 쿼리를 실행합니다. 메서드 이름에서 쿼리를 파생 할 때 스프링 데이터에서 All 부분을 무시합니다. 유일한 중요한 비트는 By 키워드입니다. 그 다음에 오는 모든 것은 필드 이름으로 취급됩니다 (OrderBy와 같은 다른 키워드를 제외하고는 findAllByOrderByIdAsc와 같은 이상한 찾고 메서드 이름으로 이어질 수 있음).

    아니요, 둘 사이에 차이점이 없습니다. 정확히 같은 쿼리를 실행합니다. 메서드 이름에서 쿼리를 파생 할 때 스프링 데이터에서 All 부분을 무시합니다. 유일한 중요한 비트는 By 키워드입니다. 그 다음에 오는 모든 것은 필드 이름으로 취급됩니다 (OrderBy와 같은 다른 키워드를 제외하고는 findAllByOrderByIdAsc와 같은 이상한 찾고 메서드 이름으로 이어질 수 있음).

    이는 다음과 같은 것이 완전하게 유효 함을 의미합니다.

    List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
    

    그리고 다음과 똑같은 SQL 쿼리를 실행합니다 :

    List<SomeEntity> findBySomeCondition();
    

    또는

    List<SomeEntity> findAllBySomeCondition();
    

    업데이트 : 설명서에서이 동작에 대한 공식적인 설명을 본 적이 없지만 스프링 데이터 (Kay)의 2.0 릴리스에 대한 최근 블로그 게시물에서 설명했습니다.

  2. ==============================

    2.findBy 메소드는 이름이나 findByFirstName (String firstName)과 같은 다른 기준으로 찾으려는 경우에 사용됩니다.

    findBy 메소드는 이름이나 findByFirstName (String firstName)과 같은 다른 기준으로 찾으려는 경우에 사용됩니다.

    findAll 메소드는 일반적으로 스펙을 제공함으로써 찾는다.

    List<T> findAll(Specification<T> spec);
    

    더 명확하게 보려면 아래의 문서를 참조하십시오.

    http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html

  3. from https://stackoverflow.com/questions/37253571/spring-data-jpa-difference-between-findby-findallby by cc-by-sa and MIT license