2012-08-07 6 views
1

애플리케이션에서 스프링 데이터 JPA를 사용하는 동안 일반적으로 엔티티 (@Entity)를 정의하고 Repository Interface (CrudRepository를 확장)를 작성하고 범위를 벗어난 몇 가지 추가 구성을 수행한다. 이 질문. 예를 들어 여러 테이블에서 데이터 관리하기 스프링 데이터 JPA

, 지금은 위와 같이 여러 기관을했고 searchByProductAndUserAndLocation 같은 서비스의 API를 (예를 들어 세 개의 데이터베이스 테이블입니다) 설계해야하는 경우

@Entity 
public class Product { 
    // code removed for brevity 
} 

public interface ProductRepository extends CrudRepository<Product, Long> { 
    // code removed for brevity 
} 

, 어떻게 봄 데이터에이 일을해야한다 JPA? 수량/비용에 대한 엔티티 클래스도 작성한다고 가정합니다. 분명히, 나는 (외국 키를 사용하는) 몇 가지 기준에 테이블을 조인 할 필요가 있지만, 구체적인 소유자 리포 지 토리/클래스가 없다고 생각하면 어떤 리포지토리가 이러한 쿼리를 보유해야하는지 명확하지 않습니다.

또한 ProductService, LocationService 등으로 데이터를 노출 한 다음 결과를 결합 할 수 있지만 데이터베이스 계층 조인 또는 다른 최적화가 결국 응용 프로그램 성능에 영향을주지는 않습니다.

이것은 매우 일반적인 유스 케이스 인데요, 이것에 대한 일반적인 관행은 뭔가요?

미리 감사드립니다.

+0

: 예컨대, 메소드의 반환 유형에 따라 저장소에 당신의 방법을 지정하는 것이 타당하다고 생각? –

답변

3

나는 그것의 반환 형식이 무엇인지 searchByProductAndUserAndLocation 방법의 경우에

public interface ProductRepository extends CrudRepository<Product, Long> { 
    List<Product> searchByUserAndLocation(User user, Location location); 
} 
관련 문제