1

我正在使用 JPA hibernate、wicket、weblogic 和 oracle 11。

我有一个表,它有 8 列,其中之一是BLOB类型。我将大 XLS 文件存储在这个 BLOB 中。我只查询 10 行,但它需要很多时间,我猜是因为 XLS 文件很大。我在实体中将 blob 类型设置为惰性:

@Basic(fetch=FetchType.LAZY)
@Lob
@Column(name = "EXCEL")
private Byte[] xls;

但它和以前一样慢。只有在查询 BLOB 时,我才能真正设置不加载 BLOB 文件?

4

1 回答 1

1

使用惰性属性获取

Hibernate3 支持对单个属性的惰性获取。这种优化技术也称为提取组。请注意,这主要是一种营销功能;优化行读取比优化列读取重要得多。但是,仅加载类的某些属性在极端情况下可能很有用。例如,当遗留表有数百列并且无法改进数据模型时。

延迟属性加载需要构建时字节码检测。如果您的持久类没有得到增强,Hibernate 将忽略惰性属性设置并返回立即获取。

请参阅使用 Maven 进行休眠的字节码检测

于 2014-02-04T11:51:55.917 回答