Wow! That's a lot of records on one grid. You are going to
want to start paging your data.
The short answer is only pass in as many records as you can
reasonably View in your grid. Cache the rest on the server in a
queue waiting for retrieval.
When the user scrolls down close to the last record (say
within 25 records from the end of the loaded records) you can be
removing a chunk of records from the top of the dataprovider and
moving them into a shared object or other storage for easy
retrieval and at the same time downloading more records from the
queue cached on the server.
Not the HOW portion of how you do that depends greatly on the
technology you use on the server and unfortunately I have no
experience with Hibernate. Sorry. Still as long as you know how to
cache a query on the server it should not be too hard. Think of it
like an automated Next N interface for your grid.
Much faster load times also as you are never sending fewer
records to your grid at any one time.