Classe para conexão JDBC usando preparredStatement

Bom dia, estou criando um sistema que vai usar JDBC puro usando PreparedStatement.
Vi que muita gente que usa hibernate usa um padrão pra fazer as conexões, aonde somente é possivel obter uma Session do hibernate aberta.
Estou tentando fazer a mesma coisa porem usando o JDBC, fiz a seguinte classe que acredito que pra que eu quero esta funcionando corretamente, mas gostaria de opinioes sobre possiveis erros ou o que eu poderia mudar. segue meu codigo de conexão:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conexao;

import config.Configuracoes;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author adm
 */
public class ConnectDb {
    
    static Connection connection;
    
    static{
        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
    }
    
    public static Connection getConnection(){
        try {
            if( connection==null || (connection!=null && connection.isClosed()) ){
                System.out.println("Criando conexao");
                connection=DriverManager.getConnection(Configuracoes.getUrlJdbc(),"SYSDBA","masterkey");
                connection.setAutoCommit(false);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return connection;
    }
    
    public static void commitCurrentConnection(){
        try {
            if(connection!=null && !connection.isClosed()){
                connection.commit();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
    public static void rollbackCurrentConnection(){
        try {
            if(connection!=null && !connection.isClosed()){
                connection.rollback();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
    public static void closeCurrentConnection(){
        try {
            if(connection!=null && !connection.isClosed()){
                connection.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

Mateus, você está fazendo um “connection pool dos pobres”? É melhor usar um Connection Pool de verdade mesmo. Sua classe admite apenas e tão somente uma conexão única no seu sistema, o que é obviamente uma coisa que pode dar problemas.

Vish porque não é recomendado usar somente uma unica conexão no sistema?
O que um connection pool de verdade faria de diferente do que eu estou fazendo?

Se o seu sistema for desktop, não vejo problemas fazer desta forma.
Caso seja Web o ideal era usar o container para gerenciar o pool.

Entretanto, o importante é quando for fazer suas classes DAO, não acoplar a chamada deste método nelas e sim, fazer elas terem uma dependência de connection que deverá ser injetado de uma forma externa.

Desta forma você pode injetar as conexões usando sua classe no sistema desktop e usando de outra forma, caso reaproveite os DAOs em um sistema Web por exemplo.