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