Bonjour,
Je collabore depuis peu à un projet au travail dans lequel quelque chose me chiffonne.
Il s'agit d'une appli Swing faisant des accès bdd vers un serveur distant, au moyen tantôt d'hibernate, tantôt de jdbc direct.
Le problème est que les requêtes complexes faites avec Hibernate sont extrêmement peu performantes, et sont donc remplacées par des requêtes SQL.
Je n'ai pas regardé en profondeur, mais il apparait clairement que chaque client Swing utilise la session Hibernate sur sa propre JVM.
Hors pour utiliser les capacités de cache d'hibernate, il apparait logique de mettre hibernate côté serveur, et de faire des appels RMI (ou http) entre le client et le serveur.
Tel que fait actuellement, si deux personnes utilisent l'application en même temps, ils ne peuvent partager le même cache. Pire, il y aurait des incohérence sur le client avec des requêtes pure jdbc si Hibernate n'a pas flush correctement (je soupçonne en fait le cache d'être tout simplement disabled).
Est-ce que mon raisonnement semble logique ? Est-ce que l'on a bien là un anti-pattern ?
Partager