Wie JPA-Transaktionen funktionieren

Der folgende Code wird ausgeführt, wenn ich eine Entität beibehalten möchte. Die Dinge scheinen gut zu funktionieren, aber ich verstehe nicht, wie es funktioniert!

EntityManager em = getEntityManager();
EntityTransaction userTransaction = em.getTransaction();
userTransaction.begin();
em.persist( ent );
userTransaction.commit();

Der obige EntityManager ist eine einzelne Instanz, die von der gesamten Anwendung gemeinsam genutzt wird. Nach dem Start der Transaktion; Ich sage nur em.persist (Entität). Woher weiß der Ruhezustand, dass er zu welcher Transaktion gehört?

Angenommen, meine Anwendung enthält 10 gleichzeitige Benutzer und alle 10 Threads, die den obigen Code ausführen. Es werden also 10 unabhängige Transaktionen erstellt und festgeschrieben. Aber alle 10 verschiedenen Entitäten verbinde ich nicht mit ihren jeweiligen Transaktionen; Also, wie kann JPA das herausfinden?

Basierend auf Antworten; wir haben unten; Sagen wir, dass wir eine EntityManager-Instanz pro Thread haben sollten? Ist das nicht ein Kill auf dem Server? Sollten wir diese Instanzen bündeln? Ist es nicht gleichbedeutend damit, eine Art Verbindungspooling erneut zu implementieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage