有三种不同的方法可以从Blob列中获取数据:getBytes getBinaryStream getBlob
此外,getBlob返回的Blob对象上还有一个getBytes和getBinaryStream.
是否有任何特殊原因(性能,内存,数据库特定问题)我应该选择另一个?
Blob对象也有一个自JDBC 4.0以来引入的free()调用.这有什么区别吗?
ska*_*man 16
如果您要提取大量数据(即足够的数据导致内存问题),那么getBinaryStream将为您提供最大的灵活性来处理和丢弃数据.
另一方面,这可能会非常慢,具体取决于您的JDBC驱动程序,因为每次从流中读取都可能需要与数据库进行大量的网络聊天.如果你调用getBytes,那么驱动程序就知道要一次性获取整个批次,这可能会更有效率.
getBlob()返回数据的"指针",您可以使用Blob接口上的方法对其进行操作.如果您需要修改或以其他方式熟悉原位数据,那么这可能是最适合您的.
通常,您希望选择基于流的方法(即getBlob().getBinaryStream()或getBinaryStream())而不是字节数组方法.
最糟糕的情况是数据库(或JDBC驱动程序)并不真正支持流式二进制数据,但是使用流式传输方法仍然没有明显的损失.
| 归档时间: |
|
| 查看次数: |
13494 次 |
| 最近记录: |