Skip to content

Instantly share code, notes, and snippets.

Created October 6, 2012 04:16
  • Star 36 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Database Connection Singleton
* To change this template, choose Tools | Templates
* and open the template in the editor.
package org.secondstack.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
* @author Deny Prasetyo
public class DatabaseConnection {
private static DatabaseConnection instance;
private Connection connection;
private String url = "jdbc:postgresql://localhost:5432/jdbc";
private String username = "root";
private String password = "localhost";
private DatabaseConnection() throws SQLException {
try {
this.connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException ex) {
System.out.println("Database Connection Creation Failed : " + ex.getMessage());
public Connection getConnection() {
return connection;
public static DatabaseConnection getInstance() throws SQLException {
if (instance == null) {
instance = new DatabaseConnection();
} else if (instance.getConnection().isClosed()) {
instance = new DatabaseConnection();
return instance;
Copy link

sLasHee commented May 31, 2020

Using the Class.forName, the postgresql driver will not appear in the project structure.

Copy link

And how it supposed to work once connection is closed? I don't see how to reopen this connection without restarting the app.

Copy link


Copy link

DejanPerovic commented Aug 10, 2021

But you need a private constructor.

private DatabaseConnection() { }

Copy link

jasoet commented Sep 22, 2021

Calling getInstance will create a new connection if the existing connection is closed.

Copy link

vinvin04 commented May 8, 2022

is there any way not to hardcode URL, username, and password?

Copy link

Thanks , It really helped me.

Copy link

you can create an other method public DatabaseConnection createCon(String url, uName, pswrd){}

Copy link

is there any way not to hardcode URL, username, and password?

So now which method should I call to get the data base connection ?

DBConnection db = DBConnection.getInstance();
Connection conn = db.getConnection();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment