Quand les connexions sont-elles renvoyées au pool de connexions avec Spring JPA (Hibernate) Entity Manager ?
Comprendre le processus :
Le gestionnaire de transactions Spring agit comme une abstraction pour la gestion des transactions, tandis que les transactions réelles se produisent au niveau de la connexion JDBC.
-
Intercepteur de transactions :
Lorsqu'une méthode @Transactional est appelée, elle est interceptée par l'aspect TransactionInterceptor.
-
Gestion des transactions :
Le TransactionInterceptor délègue la gestion des transactions à l'implémentation configurée d'AbstractPlatformTransactionManager (JpaTransactionManager dans ce cas) .
-
Liaison du gestionnaire d'entité :
JpaTransactionManager lie la transaction en cours à un EntityManager, garantissant que tous les DAO impliqués dans la transaction partagent le même contexte de persistance.
-
Contrôle des transactions :
JpaTransactionManager utilise l'API de transaction EntityManager pour contrôler les transactions.
-
Achèvement de la transaction :
Une fois la transaction terminée (validation/annulation), le JdbcTransaction appelle ManagedClose(), déclenchant la fermeture de la session et de la connexion JDBC.
-
Gestion de la connexion par DataSource :
Le DataSourceConnectionProvider (configuré pour HikariCP dans cet exemple) ferme la connexion JDBC et la renvoie à le pool de connexions.
Remarque sur les transactions RESOURCE_LOCAL :
Pour les transactions RESOURCE_LOCAL, définissez la propriété hibernate.connection.provider_disables_autocommit pour garantir une acquisition de connexion paresseuse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!