Hi zusammen,
ich greife von meinem Java-Programm auf eine PostgreSQL Datenbank zu.
Aktuell Habe ich ein Objekt, welches alle Aktionen auf der Datenbank verwaltet. (Ich verwende die lib jdbc)
Hier eine Beispiels-Implementierung:
Hier erstelle ich also ein DBConnection-Objekt welches eine Connection zu der Datenbank aufbaut.
Erfolgt eine Aktion auf der Datenbank, dann wird für jede Aktion ein extra Thread gestartet, welcher die Aktion (hinzufügen/entfernen/Abfrage) ausführt.
Die Synchronisation übernimmt das Connection-Object von sich aus.
-----------------------
Ok, nun habe ich gelesen dass aus Performanz-Gründen auch mehrere COnnections zur Datenbank aufgebaut werden können.
Ich möchte nun also anstatt anstatt nur eine Connection, mehrere Connections aufbauen.
Nun meine Frage, wie ich das korrekt implementieren muss.
Mein bisheriger Ansatz bzw. Idee:
Ich erstelle ein neues Objekt DBConnectionPool, welches alle Connections verwaltet.
Er initialisiert zu Beginn 1 Connection, werden weitere angefordert erstellt er noch weitere.
Eine maximale Anzahl an Connections kann festgelegt werden.
Ist mein DBConnectionPool ebenfalls ein Thread?
Was macht er wenn alle Connections "in Verwendung" sind? Welche Connection gibt er dann zurück?
Ist dieser Ansatz mit einem Extra-Objekt, welches die Connections verwwaltet überhaupt sinnvoll?
Hoffe ihr versteht meine Problematik und wisst was ich meine.
Vielen Dank schon einmal!
ich greife von meinem Java-Programm auf eine PostgreSQL Datenbank zu.
Aktuell Habe ich ein Objekt, welches alle Aktionen auf der Datenbank verwaltet. (Ich verwende die lib jdbc)
Hier eine Beispiels-Implementierung:
Java:
public class MyDBConnector implements Runnable{
private Connection dBConnection;
public MyDBConnector{
init();
}
@Override
public run(){
while(true){
...
}
}
private init(){
dBConnection = DriverManager.getConnection("jdbc:postgresql://ipPublica:5432/DataBase","user", "pass");
....
}
public query(...) throw exception{
executeThread(new DBThread(){
run(){
Statement stmt = dBConnection.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001");
while ( rs.next() ) {
String lastName = rs.getString("Lname");
System.out.println(lastName);
}
}
}
}
public addDBEntry(){
executeThread(new DBThread(){
run(){
// add a entry
....
}
}
}
}
public removeDBEntry(){
executeThread(new DBThread(){
run(){
// remove a entry
....
}
}
}
private close(){
dBConnection.close();
}
}
Hier erstelle ich also ein DBConnection-Objekt welches eine Connection zu der Datenbank aufbaut.
Erfolgt eine Aktion auf der Datenbank, dann wird für jede Aktion ein extra Thread gestartet, welcher die Aktion (hinzufügen/entfernen/Abfrage) ausführt.
Die Synchronisation übernimmt das Connection-Object von sich aus.
-----------------------
Ok, nun habe ich gelesen dass aus Performanz-Gründen auch mehrere COnnections zur Datenbank aufgebaut werden können.
Ich möchte nun also anstatt anstatt nur eine Connection, mehrere Connections aufbauen.
Nun meine Frage, wie ich das korrekt implementieren muss.
Mein bisheriger Ansatz bzw. Idee:
Ich erstelle ein neues Objekt DBConnectionPool, welches alle Connections verwaltet.
Er initialisiert zu Beginn 1 Connection, werden weitere angefordert erstellt er noch weitere.
Eine maximale Anzahl an Connections kann festgelegt werden.
Ist mein DBConnectionPool ebenfalls ein Thread?
Was macht er wenn alle Connections "in Verwendung" sind? Welche Connection gibt er dann zurück?
Ist dieser Ansatz mit einem Extra-Objekt, welches die Connections verwwaltet überhaupt sinnvoll?
Hoffe ihr versteht meine Problematik und wisst was ich meine.
Vielen Dank schon einmal!
Zuletzt bearbeitet: