Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.Blob包含什么?_Java_Sql_Hibernate - Fatal编程技术网

java.sql.Blob包含什么?

java.sql.Blob包含什么?,java,sql,hibernate,Java,Sql,Hibernate,文件上说: 默认情况下,驱动程序使用SQL locatorBLOB实现Blob,这 表示Blob对象包含指向SQL Blob的逻辑指针 数据,而不是数据本身 因此,如果我从数据库中得到一个Blob对象,我不会得到数据的所有字节,而只得到一个流,就像文件系统中文件的输入流一样。如果我错了,请纠正我 但是现在,如果我自己从构造函数中创建Blob,例如使用Hibernate的Lobhelper,该怎么办 有: createBlobbyte[]字节 createBlobInputStream流,长长度

文件上说:

默认情况下,驱动程序使用SQL locatorBLOB实现Blob,这 表示Blob对象包含指向SQL Blob的逻辑指针 数据,而不是数据本身

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

但是现在,如果我自己从构造函数中创建Blob,例如使用Hibernate的Lobhelper,该怎么办

有:

createBlobbyte[]字节 createBlobInputStream流,长长度
我从这两个构造函数中得到的Blob的属性是什么?数据是在Blob对象内部还是流设置

Java中的Blob对象是Sql中Blob二进制大对象对象的映射。ResultSet、CallableStatement和PreparedStatement中的方法可用于Blob对象。JDBCAPI允许Blob与int的使用方式相同,getBlob和setBlob等方法与getInt和setInt相同

Blob有一些限制:

不能使用相等或非相等运算符 不能使用OrderBy、Distinct和GroupBy。 因此,不建议在Blob中存储整数。

类负责在hibernate中创建Blob,它使用,实际上使用:

用于createBlobbyte[]字节 它的定义是:BinaryStreamImpl扩展ByteArrayInputStream实现BinaryStream BinaryStreamImpl使用ByteArrayInputStream保存对数组的引用。 用于createBlobInputStream流,长度较长,定义为:StreamBackedBinaryStream实现流 StreamBackedBinaryStream保存对流的引用。
因此,请查看源代码链接,以便更好地了解幕后发生的事情。

Blob将包含您提供的任何内容,您不必关心如何维护这些内容的确切细节,因为它可以在Java更新时更改。-如果您提供了InputStream,那么这就是它的功能,这意味着您只能从Blob的字节中请求一次,因为这会耗尽流。一次使用是将数据作为INSERT或UPDATE语句的一部分发送到数据库。您问题中引用的文本是关于作为SELECT语句的结果从JDBC驱动程序获得的Blob对象,它描述了驱动程序实现来自数据库的Blob的常用方法。这并不意味着所有驱动程序都是这样做的,或者所有Blob对象都是这样实现的。