2016-10-04 4 views
0

인덱스하고자하는 엔티티가 User입니다. 나는 현재 Hibernate-Search를보고 있고 성능 문제를 겪고있다.많은 콜렉션을 가진 엔티티를 색인하십시오.

내 POJO에는 Collections이 많이 있습니다. 그러나 나는이 필드를 채우려 고하지 않습니다. 누구나 'MassIndexer'를 사용하여이를 수행 할 수있는 방법을 알고 있습니까? 여기

, 나는, @Field로 표시되지 아무것도 색인 피하기 위해 찾고 있어요 나는 MassIndexer을 실행할 때, 나는로드지고 다른 모든 Collection들보고하고이 예에서 내 POJO

@Entity 
@Indexed 
public class User { 
    @Id 
    private long id; 

    @Field 
    private List<Address> addresses; // Address.street is what I am looking for 

    @Field 
    private String firstName; 

    @Field 
    private String lastName; 

    private List<AKA> akas; 

    private List<Wife> wives; 

    ... 

} 

의 조각이다 . 내가

fullTextSession.createIndexer().startAndWait(); 

어떤 생각이 내 색인 시간을 단축하기 위해 피할 수있는 방법에의 인덱스 재거야 방법

현재는 여기에?

답변

0

Hibernate Search는 인덱스를 구축하는 데 필요한 릴레이션으로 "이동"하기 만하므로 필요할 때만 해당 게으른 콜렉션의 로딩을 트리거합니다.

Hibernate가 다른 콜렉션을로드하는 경우, 이는 아마도 이러한 콜렉션이 lazy association으로 매핑되어 있지 않기 때문일 것입니다. 모든 관계가 lazy로 표시되어 있는지 확인하십시오. 런타임에 열망하는 게으른 관계를 만들 수있는 좋은 방법입니다. 예를 들어 HQL에서 "불러 오기"명령어를 사용하는 것과 달리 반대는 할 수 없습니다.

특정 경우 컬렉션을 매핑하는 방식으로 인한 것일 수 있습니다.을 주문 열없이 사용하면 가방으로 처리되어 매우 비효율적입니다.

관련 문제