Java 如何在低内存使用率的情况下使用hibernate将大文件保存到数据库并从数据库中读取?
我想用hibernate将一些文件内容保存到数据库中,我的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 { @
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二级缓存的一个很好的候选,具有只读策略。这将提高性能。在谷歌上搜索像这样的教程。如果您实施,请分享性能差异。