Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在低内存使用率的情况下使用hibernate将大文件保存到数据库并从数据库中读取?_Java_Hibernate_Bigdata_Lob - Fatal编程技术网

Java 如何在低内存使用率的情况下使用hibernate将大文件保存到数据库并从数据库中读取?

Java 如何在低内存使用率的情况下使用hibernate将大文件保存到数据库并从数据库中读取?,java,hibernate,bigdata,lob,Java,Hibernate,Bigdata,Lob,我想用hibernate将一些文件内容保存到数据库中,我的hibernate模型是: import javax.persistence.*; import java.io.Serializable; import static javax.persistence.AccessType.FIELD; @Entity @Access(FIELD) @Table(name = "MYFILE") public class MyFile implements Serializable { @

我想用hibernate将一些文件内容保存到数据库中,我的hibernate模型是:

import javax.persistence.*;
import java.io.Serializable;
import static javax.persistence.AccessType.FIELD;

@Entity
@Access(FIELD)
@Table(name = "MYFILE")
public class MyFile implements Serializable {

    @Id
    @SequenceGenerator(name = "MYSEQ", sequenceName = "MYSEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYSEQ")
    @Column(name = "ID")
    private Long id;


    @Column(name = "FILE_CONTENT")
    @Lob
    private byte[] fileContent;

    // getters and setters

}
您可以看到
fileContent
字段的类型是
byte[]
,上面有一个
@Lob

它工作得很好,但问题是如果文件很大,例如10米或20米,它将占用大量内存,这是生产中的一个问题


我想知道是否有任何方法可以使用低内存,比如说,使用
而不是
字节[]
?但我不确定什么是正确的解决方案。

为什么要将其放在Hibernate中?看起来它可能是用于此作业的错误工具。M=Mb吗?(10 Mb,20 Mb)。你经常读这个专栏吗?它经常变化吗?如果它不经常更改,你想过缓存它吗?请看@Jay,它是一种存档,不经常,而且从不更改。如果它从不更改,那么它是Hibernate二级缓存的一个很好的候选,具有只读策略。这将提高性能。在谷歌上搜索像这样的教程。如果您实施,请分享性能差异。