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
.
Connection
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.