Bonjour à tous !

Je commence à avoir quelques soucis de performance avec l'application Swing que je suis en train de développer.
Je gère des sociétés, des contacts... ce genre de choses.

Lorsque j'ai besoin d'effectuer une recherche parmi les sociétés par exemple je les récupère toutes depuis la base (c'est très rapide) puis j'utilise les glazedlists qui sont vraiment géniales pour ça.
Sauf que bien sûr toutes mes données sont dans la RAM. Au bout d'un moment ça surchage un peu, si on recherche plusieurs fois des sociétés par exemple.

Je voulais savoir s'il était pertinent d'utiliser un système de cache pour charger les données une fois pour toute (on ne travaille qu'avec une infime minorité des sociétés présentes dans la base de données) ce qui permettra d'une part d'afficher beaucoup plus vite les données (là ça me prend moins d'une seconde mais quand même) et d'autre part d'éviter les memory leaks parce que j'ai l'impression que l'application n'envoie pas tous les objets au garbage collector.

Le truc c'est que l'utilisateur doit quand même bosser sur des données qui sont à jour et j'ai peur qu'avec un tel système on en arrive à modifier des données qui ont déjà changé en base ou même qui n'existent plus.

Au début je pensais bosser simplement avec des maps et JMS qui enverrait des notifications d'ajout/suppression/modification des données pour que les maps situées sur les autres postes client se mettent à jour, mais si ce genre de chose est déjà implémenté dans les systèmes de cache je n'ai pas envie de réinventer la roue...

Je vous remercie d'avance pour vos éclaircissements !