In a spring mvc app using hibernate and JPA, I have a keyword
class which enables users to search records in an underlying database. The JSP has a search box in a
I'm afraid the poor client-side performance come from the method your are using for loading the data. I think 80000 records is too much for a DOM source, especially with the search fired on keypress.
Before the v0.10.0: I recommend you to switch to an AJAX source (with paging enabled). A bit more work is required to set things up but it should have a significant impact on performance. Note that the JSP sample app does use the same technologies (Spring, JPA) as yours. Feel free to take a look.
However, if you really want to keep loading data with a DOM source, you could simply unbind the keypress event handler, as suggested in this post. To implement it, you'll need the extra JavaScript feature of Dandelion-Datatables.
Starting from the v0.10.0: the filtering feature has been improved in multiple ways:
Of course, using an AJAX source is still recommended but the above features will improve the UX even more. I'll update this anwser with the right links to the new docs and sample apps once this version released.
Hope this helps!
(Disclaimer required by StackOverflow: I'm the author of Dandelion)
EDIT: Dandelion 0.10.0 released. Links added
EhCache
may not be what you need first. It provides ability to handle your application cache, which means keep in memory the most used objects, to access them faster (from memory rather then querying them) when you need them. So if you have like 80 000 keywords, that sounds like you have 80 000+ search possibilities, which means that :
What you may need, though, is an underlying index system, like Lucene
(or Solar
if you have multiple instances), which will help you speed up your queries. Then, your searches will be faster, no matter they have been fired before or not.
Of course, you can use the indexing system with a caching system to have even better performances. My point is indexing would be more important than caching at first.
Some other ideas :
Good luck !
EDIT : Reviewing the problem, an autocomplete functionality would be better. For example : http://johnderinger.wordpress.com/2013/01/10/html-autocomplete-with-jpa-rest-and-jquery/