Я использую репозиторий 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;
}
Спасибо за ваши ответы.
Возможно, вы не должны использовать 'findAll()', если вам нужно всего 5 полей, а затем извлекать только их. – user902383
Рассмотрите однонаправленные ассоциации, используя @JoinTable. – SklogW