JPA实体的内存处理

问题描述

我有以下JPA实体:

@Entity
public class ABC implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "\"Key\"")
    private String key;

    @Column(name = "\"Field1\"")
    private String field1;

    @Column(name = "\"Field2\"")
    private String field2;

    @Column(name = "\"Data\"",length = 2147483647)
    private String data;

    public ABC() {
        // default constructor
    }

实体中的data字段映射到数据库中的BLOB,我们在其中存储交易数据,我们也提供这些数据以供下载。

我们在Spring数据JPA中实现了一些查询,以从DB中选择数据。例如。

@Query("SELECT t FROM ABC f WHERE t.key IN :keys")
ArrayList<ABC> findByKeys(@Param("keys") Set<String> keys);

在某些情况下,当我们最终从数据库中选择大数据集时,会遇到Data receive Failed [java.io.IOException: java.lang.OutOfMemoryError: Direct buffer memory]。在大多数情况下,数据库data字段为空白。我的问题是如何处理包含ArrayList<ABC>值的变量的内存?它是否为列表中的data字段保留了内存?

基于此,我们需要考虑是否需要通过本机查询数据库中仅选择我们需要的字段,但与此同时,我们将不得不拥有自己的映射器,并且还将失去与其他实体的关联性JPA处理得很优雅。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)