gpt4 book ai didi

java - java.sql.Blob 包含什么?

转载 作者:行者123 更新时间:2023-11-30 05:57:42 27 4
gpt4 key购买 nike

文档中写道:

By default drivers implement Blob using an SQL locator(BLOB), which means that a Blob object contains a logical pointer to the SQL BLOB data rather than the data itself.

因此,如果我从数据库获取 Blob 对象,我不会获取数据的所有字节,而只会获取一个流,就像文件系统中文件的 InputStream 一样(如果我错了,请纠正我)。

但是现在,如果我自己从构造函数创建 Blob(例如使用 Hibernate 的 Lobhelper)会怎样?

有:

  • createBlob(byte[] 字节)
  • createBlob(InputStream 流,长长度)

我从这两个构造函数返回的 Blob 的属性是什么?数据将位于 Blob 对象内部还是流设置?

最佳答案

org.hibernate.engine.jdbc.NonContextualLobCreator 类负责在 hibernate 中创建 Blob,它使用 org.hibernate.engine.jdbc.BlobProxy ,它实际上使用:

  • BinaryStreamImpl 用于createBlob(byte[] bytes)它定义为:BinaryStreamImpl extends ByteArrayInputStream implements BinaryStream BinaryStreamImpl使用ByteArrayInputStream用于保存对数组的引用。
  • StreamBackedBinaryStream 用于createBlob(InputStream stream, long length)它定义为:StreamBackedBinaryStream implements Stream StreamBackedBinaryStream保存对您的信息流的引用。

因此,请检查源代码链接,以便更好地了解幕后发生的事情。

关于java - java.sql.Blob 包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com