lazy-loading Java JDBC Lazy-Loaded ResultSet





2 Answers

您是否可以通過將Statement的獲取大小設置為1來實現此目的?

如果您一次只獲取1行,則在ResultSet上調用next()之前,不應加載每一行。

例如

Statement statement = connection.createStatement();
statement.setFetchSize(1);
ResultSet resultSet = statement.executeQuery("SELECT .....");
while (resultSet.next())
{
  // process results. each call to next() should fetch the next row
}
java jdbc lazy-loading resultset

有沒有辦法獲得從運行JDBC查詢獲得的ResultSet來延遲加載? 我希望每行都按照我的要求加載,而不是事先加載。




這裡有一個答案。

引用:

Presto JDBC驅動程序永遠不會將整個結果集緩沖在內存中。 每個請求,服務器API將向驅動程序返回最多約1MB的數據。 在消耗數據之前,驅動程序不會從服務器請求更多數據(通過在ResultSet上調用next()方法適當的次數)。

由於服務器API的工作方式,忽略了驅動程序提取大小(根據JDBC規範,它只是一個提示)。

證明忽略了setFetchSize




Related