In a desktop application I helped write, we found that the normal user workflow caused the app to hit the database multiple times for the same data, as users would flip back and forth between the various screens. It was painfully apparent to them that we had a lot of data to pull.
We came up with the idea of a Database Agent dll. It's only purpose was to query the database for all the data they needed, right at the start. Then as they flipped back and forth, all the data was right there in memory. At the end, they could push save and it we would do one mass update.
Although our memory footprint grew substantially, the response time between screens dropped to almost nothing. Bottom line...customers happy.