java - JPA 持久保存大 blob

标签 java jpa ejb blob

我尝试使用大型 blob 文件持久保存实体,但在 JBoss 日志中收到“内存不足”错误。

我使用多种配置进行测试,但总是得到相同的结果。我正在使用 jBoss 6 和 MySQL。

这个例子...实体:

@Entity
@Table(name="ficheros")
public class Fichero implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false)
    private int idfichero;

    @Lob()
    @Column(nullable=false)
    private Blob fichero;

    public Fichero() {
    }

    public int getIdfichero() {
        return this.idfichero;
    }

    public void setIdfichero(int idfichero) {
        this.idfichero = idfichero;
    }

    public Blob getFichero() {
        return this.fichero;
    }

    public void setFichero(Blob fichero) {
        this.fichero = fichero;
    }   
}

类(class):

public Integer insertaFichero(Fichero fich) {
    ficheroDAO.create(fich);

    return fich.getIdfichero();
}

还有其他方法吗?

最佳答案

此错误的问题是操作系统无法为线程堆栈分配更多内存,因此无法实例化新线程。可能不是 JBoss 的问题。您必须减少每个线程使用的内存量。 JBoss 线程的最佳大小是 128k 或 256k。

您可以从 JBoss 文档中查看这篇文章

https://community.jboss.org/wiki/OutOfMemoryExceptions?_sscc=t .

https://community.jboss.org/wiki/OutOfMemoryExceptionWhenCannotCreateThread .

另请参阅 stackoverflow 问题: Safe thread stack size?

为了减少这个内存量,在linux中我找到了命令:

ulimit -s 256

关于java - JPA 持久保存大 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397981/

相关文章:

java - 在 Eclipse Dali 中安装/更新 EclipseLink

java - 如何找到JPA的版本?

java - 将 MySQL 几何图形映射到 EJB 实体时出错

java - 无状态 session bean 中的多线程?

java - 从 Glassfish 4.1 中的 Object.afterUnmarshal 捕获异常

java - 用于在 Spring 和 JSF 中检索 session bean 的静态类

java - JPA 不急于加载所有内容

java - Spring 锁定域对象的最佳实践?

Java:向方法发送多个参数

java - java文件运行出错