Grundlegende JDBC-Konzepte, Pooling und Threading

Ich habe immer JDBC in JavaSE in einer Single-Thread-Umgebung verwendet. Aber jetzt muss ich einen Verbindungspool verwenden und vielen Threads erlauben, mit der Datenbank (MSSQL und Oracle) zu interagieren, und es fällt mir schwer, es so zu machen, als ob mir ein grundlegendes Verständnis der API fehlt.

AFAIK nach Verbindung und Protokollierung aConnection Stellt eine physikalische TCP / IP-Verbindung zur Datenbank dar. Es erstelltStatement(s), die als SQL-Interaktion (en) mit der Datenbank über die gesehen werden könnenConnection.

Woher kommt die Transaktion und das Rollback? Ist es amConnection oderStatement Niveau.Ist es sicher, dass manConnection Erstellen Sie N Anweisungen und geben Sie sie an verschiedene Threads weiter, damit jeder diese verwenden kannStatement ?

Wenn nicht, und nachdem Sie den Pool so konfiguriert haben:

OracleDataSource ods = new OracleDataSource(); 
ods.setURL("jdbc:oracle:thin:@tnsentryname");
ods.setUser("u");
ods.setPassword("p");

BTW, wo stelle ich die Verbindungspoolgröße ein?

Ist es das, was ich in jedem Thread tun würde, um die Verbindung korrekt zu verwenden?

// Thead-Run-Methode

Connection conn = ods.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("the sql");
// do what I need to do with rs
rs.close();
int updateStatus = stmt.executeUpdate("the update");
stmt.close();
conn.close();

// Threadende-Laufmethode

Wenn eine physische Verbindung des Pools irgendwie abstürzt oder getrennt wird, versucht der Pool dann automatisch, die neue Verbindung wieder herzustellen und in den Pool einzuspeisen, sodass die nachfolgende Verbindung pool.getConnection () nur eine Integritätsverbindung erhält?

Vielen Dank und verzeihen Sie mein schlechtes Englisch bitte.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage