Maison  >  Article  >  base de données  >  Comment Spring JPA gère-t-il les connexions avec Hibernate ?

Comment Spring JPA gère-t-il les connexions avec Hibernate ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 15:47:30877parcourir

How Does Spring JPA Manage Connections with Hibernate?

Comprendre la gestion des connexions dans Spring JPA avec Hibernate

Dans Spring JPA (Hibernate), les connexions sont gérées via l'interaction du gestionnaire de transactions Spring , l'API de transaction JPA, l'interface de session d'Hibernate et le pool de connexions sous-jacent.

Initiation et liaison de transaction

  1. Les méthodes de service transactionnel sont interceptées par l'aspect TransactionInterceptor .
  2. Le TransactionIntreceptor délègue la gestion au JpaTransactionManager.
  3. JpaTransactionManager lie la transaction Spring à un EntityManager.

Acquisition et fermeture de connexion

  1. L'API de transaction JPA utilise l'API de transaction EntityManager pour lancer des transactions.
  2. La session Hibernate utilise la connexion JDBC pour gérer les transactions.
  3. Lorsque la transaction se termine (validation/annulation ), la JdbcTransaction se ferme.
  4. Cela déclenche la fermeture de la session Hibernate et la fermeture de la connexion JDBC.
  5. Le pool de connexions renvoie la connexion au pool.

Connection Pooling

Les connexions renvoyées au pool sont gérées par le DataSource de pooling de connexions. La connexion JDBC elle-même est un proxy qui intercepte les appels clôturés et les délègue au pool de connexions, empêchant ainsi la résiliation physique de la connexion à la base de données.

Transactions RESOURCE_LOCAL

Pour les transactions RESOURCE_LOCAL, considérez définition de la propriété hibernate.connection.provider_disables_autocommit pour garantir que les connexions à la base de données sont acquises paresseusement lorsque cela est nécessaire afin d'éviter les problèmes de validation automatique dus à la validation automatique désactivée dans le pool de connexions.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn