Campos de blobs de carga diferida en Spring e Hibernate
Cuando se trata de grandes datos binarios (BLOB) en tablas de bases de datos, es importante optimizar su recuperación para evitar problemas de rendimiento y consumo de memoria. Un enfoque es utilizar la carga diferida, que permite recuperar los datos solo cuando es necesario. Sin embargo, esta técnica a veces puede plantear desafíos con Hibernate y Spring.
En su situación, ha configurado su base de datos, Spring beans y clase de entidad de la siguiente manera:
Configuración de la base de datos (porciones relevantes):
Clase de entidad (anotación relevante):
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "BlobField", columnDefinition = "LONGBLOB")
@Type(type = "org.springframework.orm.hibernate3.support.BlobByteArrayType")
private byte[] blobField;
A pesar de marcar el blobField como diferido, te encuentras con un OutOfMemoryError al recuperar grandes cantidades de datos. Esto sugiere que el mecanismo de carga diferida no se comporta como se esperaba.
Según la documentación y las experiencias de los usuarios, a continuación se detallan algunos factores que pueden influir en la carga diferida de BLOB:
Para resolver el problema, considere los siguientes pasos:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3