Après la mise à niveau d'Hibernate 3 vers Hibernate 4, je suis obligé de retirer HibernateTemplate de mon application basée sur le printemps. Pour qu'une session Hibernate soit disponible, je dois utiliser une démarcation de transaction plus cohérente qu'avant. Cela m'oblige à ajouter un conseil de transaction à ma couche de service ainsi qu'à porter une attention particulière aux threads d'arrière-plan effectuant des opérations de base de données en lecture seule. J'ai deux sources de données (je dois utiliser deux bases de données différentes), la première étant utilisée pour presque toutes les demandes d'application, la seconde uniquement pour les demandes spéciales (disons 1 sur 1000). Le plus simple est d'utiliser des aspects pour envelopper les deux types de demandes dans les transactions pour les deux bases de données (je n'ai pas besoin de déterminer quelles requêtes nécessitent quelles bases de données), mais je m'interroge sur les frais généraux impliqués. Est-ce que l'acquisition de la connexion à la base de données réelle et la logique de transaction (comme la validation, etc.) sont reportées jusqu'à ce que les requêtes soient effectuées? Ou est-ce que mon approche aboutit à un grand nombre de transactions (inutilisées) en cours de démarrage et d'engagement?Redémarrage de la transaction Hibernate de printemps
Pour clarifier, j'ai deux sources de données, deux gestionnaires de transactions, deux conseils de transaction pour deux coupures de points "inServiceLayer" (identiques).
Merci pour toute aide!
Merci pour votre réponse. Vous avez raison: l'application n'est pas idéalement superposée. Certaines classes accèdent à la première base de données, les classes accèdent à la deuxième base de données et les classes accèdent aux deux bases de données. Si j'avais trois couches séparant ces classes, je pourrais correctement appliquer la séparation des transactions. Mais comme c'est le cas aujourd'hui, je ne peux pas facilement distinguer ces classes, j'ai donc choisi d'ouvrir une transaction dans les deux bases de données dans tous les cas. –