Je débute en JAVA et me lance dans le développement d'une application assez grosse. J'ai quand même quelques années d’expérience en conception d'applications sous d'autres framework.

Je viens demander quelques avis et conseils.

Il s'agit d'une application client/serveur. Client Flash et serveur JAVA. La conception ressemble beaucoup à un jeu vidéo multijoueur. Les serveurs seront très sollicités, le temps de latence est un des facteurs clé de réussite du projet.

Je pars sur le principe de charger toutes les données en RAM sous forme d'objets JAVA.
A chaque mise à jour d'un champ d'un objet par un client, je dois :
- Sauvegarder la modification sur le serveur SQL
- Prévenir les clients concernés de la modification, (notification)

Notez qu'il s'agit bien d'une interaction au niveau du champ (comme un google spreadsheet). Pas de l'objet entier.

J'ai commencé par concevoir sur papier mon propre système de persistance/notification avant de me rendre compte qu'un outil faisait déjà une partie du boulot (je pense à Hibernate pour la persistance).

Du coup j'ai envisagé d'utiliser Hibernate pour la mise à jour SQL mais quand je vois la couche qu'il rajoute, avec tout les appels à la réflexion, je crains que ce soit lent. En tout cas plus lent que de créer un thread asynchrone qui gère son pool de connexions. J'aimerai savoir si Hibernate fait des UPDATES intelligemment en n'envoyant que les champs modifiés ou si il sauve tout l'objet à chaque fois.

Quels systèmes de persistance et de notification existent et fonctionnent en asynchrone (dans leur propre thread) ?

J'ai aussi regardé du coté des frameworks dédiés multi-utilisateurs, du type SmartFox qui offrent des outils intéressants. Quelqu'un l'à déjà utilisé ?

[edit] J'ai corrigé le post suite à la remarque de Nemek (merci)