Hallo,
nachdem ich mich nun in Servlets eingearbeitet habe möchte ich jetzt das erste kleinere Projekt umsetzen wo eine Datenbank genutzt wird um Daten auszulesen. Wie ich mit Datenbanken arbeite ist klar, nur bin ich mir noch nicht sicher wie ich am besten mit einem Servlet eine Datenbank nutze. Ich habe nun schon Google befragt und viele Lösungen gefunden aber keine Aussage was nun die beste Lösung ist. Ich habe nun folgende Ansätze:
1. In der doGet() bzw. doPost() Methode wird bei jedem Aufruf eine Verbindung zur Datenbank erstellt und die Informationen abgerufen/eingetragen.
2. Ich erstelle in der init() Methode des Servlets die Datenbankverbindung welche dann von allen Threads genutzt werden kann um auf die Datenbank zugreifen zu können.
Die erste Methode macht durchaus Sinn, meiner Meinung nach wäre es aber Unsinn unnötige Datenbankverbindungen aufzubauen da sie unnötig sind, zu einer stärkeren Belastung führen und auch noch mehr Zeit brauchen. Bei der zweiten Methode würde es für das Servlet eine Verbindung geben so lange es genutzt wird und alle Threads würden diese nutzen können. Vermutlich wäre das die beste Möglichkeit bei vielen Anfragen. Nur bin ich mir nicht sicher ob sich das Problemlos so wie ich mir das denke umsetzen lässt.
Ich würde es so machen (Auszüge)
Lokal und theoretisch scheint es zu funktionieren weiß nur nicht ob da nicht ein Denkfehler drinnen sein könnte wenn mehrere Anwender Zeitgleich das ganze nutzen. Bin ich auf dem richtigen weg, oder habt ihr noch ein paar Ratschläge für mich?
nachdem ich mich nun in Servlets eingearbeitet habe möchte ich jetzt das erste kleinere Projekt umsetzen wo eine Datenbank genutzt wird um Daten auszulesen. Wie ich mit Datenbanken arbeite ist klar, nur bin ich mir noch nicht sicher wie ich am besten mit einem Servlet eine Datenbank nutze. Ich habe nun schon Google befragt und viele Lösungen gefunden aber keine Aussage was nun die beste Lösung ist. Ich habe nun folgende Ansätze:
1. In der doGet() bzw. doPost() Methode wird bei jedem Aufruf eine Verbindung zur Datenbank erstellt und die Informationen abgerufen/eingetragen.
2. Ich erstelle in der init() Methode des Servlets die Datenbankverbindung welche dann von allen Threads genutzt werden kann um auf die Datenbank zugreifen zu können.
Die erste Methode macht durchaus Sinn, meiner Meinung nach wäre es aber Unsinn unnötige Datenbankverbindungen aufzubauen da sie unnötig sind, zu einer stärkeren Belastung führen und auch noch mehr Zeit brauchen. Bei der zweiten Methode würde es für das Servlet eine Verbindung geben so lange es genutzt wird und alle Threads würden diese nutzen können. Vermutlich wäre das die beste Möglichkeit bei vielen Anfragen. Nur bin ich mir nicht sicher ob sich das Problemlos so wie ich mir das denke umsetzen lässt.
Ich würde es so machen (Auszüge)
Java:
import java.sql.*;
...
// Objekt für Datenbankzugriff
private Connection conn = null;
...
public void init(ServletConfig servletconfig)
// Verbindung zur Datenbank herstellen
conn = DriverManager.getConnection("jdbc:mysql://server/DBName?user=user&password=geheim");
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Statement stmt = null;
ResultSet rs = null;
stmt = conn.createStatement();
Lokal und theoretisch scheint es zu funktionieren weiß nur nicht ob da nicht ein Denkfehler drinnen sein könnte wenn mehrere Anwender Zeitgleich das ganze nutzen. Bin ich auf dem richtigen weg, oder habt ihr noch ein paar Ratschläge für mich?