java - JPA 存储库 - 改进 findAll() 性能

标签 java mysql jpa

我正在使用 JPA 存储库,我需要检索整个 Mysql 表(40000 条记录),其中有 5 个外键指向较小的表(500 条记录)。我需要这 5 个表中的每一个的一个字段。

如果我调用 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;
}

感谢您的回答。

最佳答案

您可以使用 EntityGraph 从外键表中选择加载字段机制。

关于java - JPA 存储库 - 改进 findAll() 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28537652/

相关文章:

java - 无法在 .\stanford-corenlp-4.0.0 找到 stanford-parser\.jar jar 文件

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - 在 CakePHP shell 中搜索

php - 在 Codeigniter 中运行多个分号分隔的查询

jpa - 将连接表中的值映射到实体

spring - 使用两种类型的 Kotlin JPA 查询内部连接

java - 日期差异包括时区偏移,怎么了?

java - JFrame 上绘制的点的总距离

java - 参数传递java

JPA 2.0 Eclipselink OrderColumn 支持