There are third party solutions available in the market, and few are open source too. Just search "cache solution java".
YOu can implement something of your own. For example if have a large dataset and you know the data changes less frequently you can create a flag column the table and which would tell you, that we need to refresh the cache. That column would get updated using database triggers. Is it making any sense to you. Or I need to elaborate it a little more.
You could also decide to gather some data into memory from the database and update this data after some time depending on the change rate of the data.
Popup values and options to choose from are mostly only configured once and doesn't need to gathered from the database each time. Also you could update some lists every hour when the user requests for a new list.
I gain a lot of performance improvement by implementing this.