Sorry, but your understanding is incorrect. There is no such thing as a "request fired again."
The request is executed once. To process the request, you will need an initial period of time (that you can do nothing but optimize your request), and then it will begin to create lines on the server that should be transferred to the client. While the lines are being transmitted, the server is likely to continue to generate more lines to be transmitted and to buffer them on the server. This server-side buffering is completely unrelated to the buffering we are talking about in this Q&A, and you have very little control over it. (Perhaps using the server configuration, if at all possible.) At some point, all the lines will be collected on the server, and then the only remaining task will be to transfer the remaining lines from the server to the client.
So, as far as the client can tell, as soon as he sent the request to the server, there is a certain delay when the server thinks about it, after which the lines become available at a speed that is usually as fast as the wire can carry them. So, the client begins to read these lines using resultSet.next() .
Without any buffering, each call to resultSet.next() sends a request from the client to the server, telling it to send the next line, and the server will respond only with this line. This would give the first line very quickly, but in the long run it would be very inefficient because it would cause too many round trips between the client and server.
When buffering, the first call to resultSet.next() will request a bunch of lines from the server. This will impose a penalty on the time to receive the first line, because you have to wait for 100 lines to be sent over the wire, but in the end it will significantly reduce the overall network costs, because there will be only one round-trip between the client and server for each group lines.
The ideal strategy for resultSet.setFetchSize() is to leave it as it is and not worry too much about it.
But if you're paranoid about performance, then a good strategy is to start with a rather small sample size (say 10) to quickly get the first row, and then double it until it reaches a certain maximum (say 100), for beyond which there is no improvement.