微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JPA实体的内存处理

如何解决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 举报,一经查实,本站将立刻删除。