Wann werden Verbindungen mit Spring JPA (Hibernate) Entity Manager an den Verbindungspool zurückgegeben?
Den Prozess verstehen:
Der Spring-Transaktionsmanager fungiert als Abstraktion für die Transaktionsverwaltung, während tatsächliche Transaktionen auf der JDBC-Verbindungsebene stattfinden.
-
Transaktionsinterceptor:
Wenn eine @Transactional-Methode aufgerufen wird, wird sie vom TransactionInterceptor-Aspekt abgefangen.
-
Transaktionsverwaltung:
Der TransactionInterceptor delegiert die Transaktionsverwaltung an die konfigurierte AbstractPlatformTransactionManager-Implementierung (in diesem Fall JpaTransactionManager). .
-
Entity Manager-Bindung:
JpaTransactionManager bindet die aktuelle Transaktion an einen EntityManager und stellt so sicher, dass alle an der Transaktion beteiligten DAOs denselben Persistenzkontext verwenden.
-
Transaktionssteuerung:
JpaTransactionManager verwendet die EntityManager-Transaktions-API, um Transaktionen zu steuern.
-
Transaktionsabschluss:
Bei Transaktionsabschluss (Commit/Rollback) wird die JdbcTransaction ruft manageClose() auf und löst das Schließen der Sitzung und der JDBC-Verbindung aus.
-
Verbindungsverarbeitung durch DataSource:
Der DataSourceConnectionProvider (in diesem Beispiel für HikariCP konfiguriert) schließt die JDBC-Verbindung und gibt sie an zurück der Verbindungspool.
Hinweis zu RESOURCE_LOCAL-Transaktionen:
Für RESOURCE_LOCAL-Transaktionen legen Sie die Eigenschaft hibernate.connection.provider_disables_autocommit fest, um eine verzögerte Verbindungserfassung sicherzustellen.
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die zu Ihrem Artikelinhalt passen:
* Wie handhaben Spring JPA und Hibernate die Rückgabe des Verbindungspools?
* Wann werden im Frühjahr JPA Tra Verbindungen wieder zum Pool freigegeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!