Depende de sus necesidades. Si está haciendo el trabajo en la memoria en una máquina, entonces ehcache funcionará perfectamente, suponiendo que tiene suficiente RAM o un disco duro lo suficientemente rápido para que el desbordamiento no provoque paginación/agitación del disco. si encuentra que necesita lograr la escalabilidad, incluso a pesar de que esta operación en particular suceda mucho, entonces probablemente quiera hacer clustering. JGroups/TreeCache de JBoss respaldan esto, al igual que EHcache (creo), y sé que definitivamente funciona si usas Ehcache con terracota, que es una integración muy ingeniosa. Esta respuesta no habla directamente de los méritos de EHcache y OSCache, así que esta es la respuesta: EHcache parece tener la mayor inercia (solía ser el desarrollo predeterminado, conocido y activo, incluido un nuevo servidor de caché), y OSCache parecía (al menos en un punto) para tener un poco más de características, pero creo que con las opciones mencionadas anteriormente esas ventajas son discutibles/reemplazadas. Ah, la otra cosa que olvidé mencionar es que la transaccionalidad de los datos es importante, y sus requisitos refinarán la lista de opciones válidas.
¿Por qué crees que usar la memoria caché será más rápido que seleccionar/filtrar en la base de datos? Eso es lo que hacen. :) –