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

时间:2014-02-28 10:25:58

标签: 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 {

    @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

它运行良好,但问题是如果文件很大,例如10M或20M,它将使用大量内存,这是生产中的一个问题。

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

0 个答案:

没有答案