2015-02-16 5 views
1

Я использую репозиторий JPA, мне нужно получить целую таблицу Mysql (40000 записей), у которой есть 5 внешних ключей к меньшим таблицам (500 записей). Мне нужно одно поле каждого из этих 5 таблиц.JPA репозиторий - улучшить findAll() performance

Если я вызываю JPArepository findall(), для получения всех данных требуется несколько секунд.

Мне нужно, чтобы оно было быстрее. Есть ли способ сделать это?

Я не знаю, что было бы лучшим решением, если это можно сделать на стороне mysql или должно быть выполнено на стороне Java. Все таблицы хорошо отображаются в JPA сущностей:

@Entity 
    @Table(name = "T_CLIENT") 
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
    public class Client implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Column(name = "code") 
    private String code; 

    @OneToOne 
    private Seller seller; 

    @OneToOne 
    private Language language; 

    @OneToOne 
    private Address address; 

    @OneToOne 
    private Country billCountry; 

    @OneToOne 
    private ClientType clientType; 
} 

Спасибо за ваши ответы.

+4

Возможно, вы не должны использовать 'findAll()', если вам нужно всего 5 полей, а затем извлекать только их. – user902383

+0

Рассмотрите однонаправленные ассоциации, используя @JoinTable. – SklogW

ответ

1

Вы можете выбрать пополнение полей из таблиц внешних ключей с помощью механизма EntityGraph.

Смежные вопросы