Heim  >  Artikel  >  Verbindungsmanager als Singleton

Verbindungsmanager als Singleton

王林
王林nach vorne
2024-02-09 18:36:081176Durchsuche

In PHP ist der Verbindungsmanager als Singleton ein gängiges Entwurfsmuster. Als PHP-Redakteur Yuzu haben wir eine eingehende Untersuchung der Prinzipien und Anwendungen dieses Designmusters durchgeführt. Die Hauptfunktion des Verbindungsmanagers besteht darin, Datenbankverbindungen zentral zu verwalten, sicherzustellen, dass in der Anwendung nur eine Datenbankverbindungsinstanz vorhanden ist, den Aufwand für das wiederholte Erstellen von Verbindungen zu vermeiden und den Lebenszyklus der Verbindung effektiv zu steuern. Dieses Entwurfsmuster ist in der Entwicklung sehr praktisch und kann die Leistung und Wartbarkeit des Programms verbessern. In diesem Artikel stellen wir detailliert vor, wie der Verbindungsmanager als Singleton implementiert wird und welche Anwendungsszenarien in tatsächlichen Projekten auftreten.

Frageninhalt

Angenommen, ich erstelle ein Objekt, um Verbindungen als Signleton zu verwalten, zum Beispiel:

public class DatabaseConnection {

private static Connection con = null;

static

{ 

String url = "jdbc:`\[`mysql:/`\](mysql://)`/localhost:3306/org";`

String user = "root";
String pass = "root";

try {

Class.forName("com.mysql.jdbc.Driver");

con = DriverManager.getConnection(url, user, pass);

}

catch (ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

}

public static Connection getConnection()

{

return con;
}

}

Verstehe ich das richtig, bei diesem Ansatz erstelle ich nur eine Verbindungsinstanz und verwende diese in der gesamten Anwendung. Muss ich nur die Verbindung schließen, bevor ich die Anwendung beende? Ich stelle diese Frage, weil mir im Tutorial gesagt wurde, dass die beste Option darin besteht, try-with-resources zum Herstellen der Verbindung zu verwenden. Aber wenn ich „try-with-resources“ oder DatabaseConnection.getConnection().close verwende, schließe ich die Verbindung und kann sie später in der Singleton-Anwendung nicht wiederherstellen. Kannst du es mir erklären?

Stack Overflow und Google durchsucht, aber keine Antwort gefunden

Problemumgehung

Sie stellen die Verbindung innerhalb eines statischen Blocks her und der statische Block wird während des Ladens der Klasse geladen. Um die Verbindung zu schließen, müssen Sie daher die Anwendung schließen.

Wenn Sie einen Singleton erstellen möchten, erstellen Sie eine Klasse, machen Sie den Konstruktor privat und definieren Sie in diesem Konstruktor Ihre Datenbankverbindung.

Das obige ist der detaillierte Inhalt vonVerbindungsmanager als Singleton. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen