Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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 对于oracle文档中的流类型,JDBC获取大小重置为1_Java_Jdbc_Spring Jdbc - Fatal编程技术网

Java 对于oracle文档中的流类型,JDBC获取大小重置为1

Java 对于oracle文档中的流类型,JDBC获取大小重置为1,java,jdbc,spring-jdbc,Java,Jdbc,Spring Jdbc,来自Oracle JDBC文档() 如果结果集的列是通过数据接口返回的数据类型LONG、LONG RAW或LOBs,即流类型,则JDBC会将语句行预取设置更改为1,即使您从未实际读取这两种类型中的任何一种类型的值 如果没有为ResultSet提供fetch size,则默认情况下该值等于语句fetch size 如果我的ResultSet包含流类型,那么在下一次访问DB时,结果集fetch size是否也会重置?如果是,我们如何保持结果集的大小 我在一些项目中使用spring jdbc,spri

来自Oracle JDBC文档()

如果结果集的列是通过数据接口返回的数据类型LONG、LONG RAW或LOBs,即流类型,则JDBC会将语句行预取设置更改为1,即使您从未实际读取这两种类型中的任何一种类型的值

如果没有为ResultSet提供fetch size,则默认情况下该值等于语句fetch size

如果我的ResultSet包含流类型,那么在下一次访问DB时,结果集fetch size是否也会重置?如果是,我们如何保持结果集的大小


我在一些项目中使用spring jdbc,spring会处理这个问题吗?

如果您正在获取的列之一是LONG或LONG\u RAW,那么是的,无论您使用的获取大小如何,驱动程序都会逐个获取行。如果您想知道,“通过数据接口返回的LOB”是您使用defineColumnType定义为LONG的LOB。有一个名为“useFetchSizeWithLongColumn”的连接属性,如果设置为“true”,将改变此行为,但请记住,一个LONG或LONG_RAW可以大于1 GB,因此如果获取其中10个,将消耗驱动程序中的大量内存。

可以设置一个获取大小,然后JDBCTeplate。文档的要点是,在
LOB
列(etc)的情况下,此设置将被忽略。即使我们设置了获取大小,如果我的查询包含流式列,它将返回到1。至少在您链接的版本中(Oracle 11)-是。如有疑问,您始终可以设置跟踪
10046
,并查看实际使用的提取大小。